Skip to content

Instantly share code, notes, and snippets.

@cemolcay
Last active December 12, 2019 19:46
Show Gist options
  • Save cemolcay/c39e2f14af6820b9df6c to your computer and use it in GitHub Desktop.
Save cemolcay/c39e2f14af6820b9df6c to your computer and use it in GitHub Desktop.
NSUserDefaults Save Manager
// MARK: - Manager
class SaveManager {
// MARK: Singleton
private static let instance = SaveManager()
class func sharedInstance () -> SaveManager {
return instance
}
// MARK: Manager
func save (object: AnyObject, key: SaveManagerKeys) {
standard().setObject(object, forKey: key.rawValue)
sync()
}
func get (key: SaveManagerKeys) -> AnyObject? {
return standard().objectForKey(key.rawValue)
}
func delete (key: SaveManagerKeys) {
standard().removeObjectForKey(key.rawValue)
sync()
}
func unarchive (key: SaveManagerKeys) -> AnyObject? {
if let data = get(key) as? NSData {
return NSKeyedUnarchiver.unarchiveObjectWithData(data)
} else {
return nil
}
}
func archive (object: AnyObject, key: SaveManagerKeys) {
let data = NSKeyedArchiver.archivedDataWithRootObject(object)
save (data, key: key)
}
// MARK: Helpers
func standard () -> NSUserDefaults {
return NSUserDefaults.standardUserDefaults()
}
func sync () {
standard().synchronize()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment