[PyObjC] NSUserDefaults

In PyObjC, using NSUserDefaults is incredibly effortless. Here is an example taken from my Movie Drop project.

# -*- coding: utf-8 -*-
 
class MovieDropAppDelegate(NSObject):
 
	_defaultSettings = {
	    'copyText': u'© ' + NSFullUserName() + ", " + str(NSCalendarDate.calendarDate().yearOfCommonEra()),
	    'frontColor':NSArchiver.archivedDataWithRootObject_(NSColor.blackColor().colorWithAlphaComponent_(.9)),
	    'backColor':NSArchiver.archivedDataWithRootObject_(NSColor.whiteColor().colorWithAlphaComponent_(.5)),
	    'fontName':"Helvetica",
	    'fontSize':11.0,
	    'movieFolder': NSHomeDirectory()
	    'settingsText':"320x240px (zoom:100% rotate:0.0 offset:0x0px)",
	}
 
	def loadAllSettngs(self):
	    ud = NSUserDefaults.standardUserDefaults()
	    ud.registerDefaults_(self._defaultSettings)
	    for k in self._defaultSettings.keys():
	        v = ud.objectForKey_(k)
	        if isinstance(v, NSData):
	            v = NSUnarchiver.unarchiveObjectWithData_(v)
	        self.setValue_forKey_(v, k)
 
	def saveAllSettngs(self):
	    ud = NSUserDefaults.standardUserDefaults()
	    for k in self._defaultSettings.keys():
	        v = self.valueForKey_(k)
	        if isinstance(v, NSColor):
	            v = NSArchiver.archivedDataWithRootObject_(v)
	        ud.setObject_forKey_(v, k)
 
	def resetAllSettings(self):
	    for k in self._defaultSettings.keys():
	        v = self._defaultSettings[k]
	        if isinstance(v, NSData):
	            v = NSUnarchiver.unarchiveObjectWithData_(v)
	        self.setValue_forKey_(v, k)
Body
Comment me!