Skip to content

Instantly share code, notes, and snippets.

@xinmyname
Last active August 29, 2015 14:16
Show Gist options
  • Save xinmyname/4b8d95c8d603de3fca20 to your computer and use it in GitHub Desktop.
Save xinmyname/4b8d95c8d603de3fca20 to your computer and use it in GitHub Desktop.
Register user defaults from Settings.bundle in Swift v1.0
//
// Loads the DefaultValue for each preference specifier with a Key in your Settings.bundle,
//
// For example, if your Settings.bundle has the following entry:
//
// <dict>
// <key>Type</key>
// <string>PSMultiValueSpecifier</string>
// <key>Title</key>
// <string>Frequency</string>
// <key>Key</key>
// <string>frequency</string>
// <key>DefaultValue</key>
// <integer>15</integer>
// <key>Titles</key>
// <array>
// <string>5 minutes</string>
// <string>15 minutes</string>
// <string>30 minutes</string>
// <string>60 minutes</string>
// </array>
// <key>Values</key>
// <array>
// <integer>5</integer>
// <integer>15</integer>
// <integer>30</integer>
// <integer>60</integer>
// </array>
// </dict>
//
// then a userDefault will be created with the key "frequency". You would check the value like this:
//
// let kFrequency = "frequency"
// frequency = _userDefaults.integerForKey(kFrequency)
//
func loadDefaults() {
let pathStr = NSBundle.mainBundle().bundlePath
let settingsBundlePath = pathStr.stringByAppendingPathComponent("Settings.bundle")
let finalPath = settingsBundlePath.stringByAppendingPathComponent("Root.plist")
let settingsDict = NSDictionary(contentsOfFile: finalPath)
let prefSpecifierArray = settingsDict?.objectForKey("PreferenceSpecifiers") as NSArray
var defaults:[NSObject:AnyObject] = [:]
for prefItem in prefSpecifierArray {
if let key = prefItem.objectForKey("Key") as String! {
let defaultValue:AnyObject? = prefItem.objectForKey("DefaultValue")
defaults[key] = defaultValue
}
}
_userDefaults.registerDefaults(defaults)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment