Created
May 2, 2016 09:51
-
-
Save jeremiegirault/d4710116e19ec86974550960ba52554a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
protocol Settings { | |
subscript(key: String) -> AnyObject? { get nonmutating set } | |
} | |
struct Defaults: Settings { | |
typealias Set = (String, AnyObject?) -> Void | |
typealias Get = (String) -> AnyObject? | |
let set: Set | |
let get: Get | |
subscript(key: String) -> AnyObject? { | |
get { return get(key) } | |
nonmutating set { set(key, newValue) } | |
} | |
} | |
let standardUserDefaults = Defaults( | |
set: { key, value in NSUserDefaults.standardUserDefaults().setObject(value, forKey: key) }, | |
get: { NSUserDefaults.standardUserDefaults().objectForKey($0) }) | |
standardUserDefaults["x"] = "y" | |
extension NSUserDefaults: Settings { | |
subscript(key: String) -> AnyObject? { | |
get { return objectForKey(key) } | |
set { setObject(newValue, forKey: key) } | |
} | |
} | |
let settingsRef: Settings = NSUserDefaults.standardUserDefaults() | |
print(settingsRef["myProp"]) | |
settingsRef["myProp"] = "someValue" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment