Skip to content

Instantly share code, notes, and snippets.

@dimpiax
Created January 26, 2016 19:14
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 dimpiax/f96d0d675f09ac474b49 to your computer and use it in GitHub Desktop.
Save dimpiax/f96d0d675f09ac474b49 to your computer and use it in GitHub Desktop.
import Foundation
extension NSUserDefaults {
func removeAllKeys(except except: [String]? = nil) {
guard let appDomain = NSBundle.mainBundle().bundleIdentifier else { return }
let defaults = NSUserDefaults.standardUserDefaults()
var dict: [String: AnyObject]?
if let except = except {
for key in except {
if let value = defaults.objectForKey(key) {
if dict == nil { dict = [:] }
dict![key] = value
}
}
}
defer {
if let dict = dict {
for (key, value) in dict {
defaults.setObject(value, forKey: key)
}
}
}
defaults.removePersistentDomainForName(appDomain)
}
}
// Usage:
NSUserDefaults.standardUserDefaults().setObject("One", forKey: "key1")
NSUserDefaults.standardUserDefaults().setObject("None", forKey: "keyN")
NSUserDefaults.standardUserDefaults().removeAllKeys(except: ["keyN"])
print("key1:", NSUserDefaults.standardUserDefaults().objectForKey("key1"))
print("keyN:", NSUserDefaults.standardUserDefaults().objectForKey("keyN"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment