Skip to content

Instantly share code, notes, and snippets.

@feighter09
Last active September 21, 2016 21:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save feighter09/a5ef67cac7d14dc2e4fee6aefef0c026 to your computer and use it in GitHub Desktop.
Save feighter09/a5ef67cac7d14dc2e4fee6aefef0c026 to your computer and use it in GitHub Desktop.
protocol DefaultConvertible {
var serialized: [String : AnyObject] { get }
init?(dictionary: [String : AnyObject])
}
class Defaults {
let userDefaults = NSUserDefaults.standardUserDefaults()
func save<T: DefaultConvertible>(toSave: T)
{
userDefaults.setValue(toSave.serialized, forKey: "\(T.self)")
}
func fetch<T: DefaultConvertible>(type: T.Type) -> T?
{
let key = "\(T.self)"
guard let dictionary = userDefaults.objectForKey(key) as? [String : AnyObject]
else { return nil }
return T(dictionary: dictionary)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment