Skip to content

Instantly share code, notes, and snippets.

@konnnn
Last active October 17, 2020 23:20
Show Gist options
  • Save konnnn/97a18803c9f309b121bbdb73302e9733 to your computer and use it in GitHub Desktop.
Save konnnn/97a18803c9f309b121bbdb73302e9733 to your computer and use it in GitHub Desktop.
Setting default values for NSUserDefaults
/*
UserDefaults (NSUserDefaults) is a go-to database for saving users' preferences over application behavior,
e.g., font size, sound disable/enable. So, most of the time, you want each of them to have a default value.
*/
// Basic approach
let userDefaults = UserDefaults.standard
// 1
if userDefaults.value(forKey: "enabledSound") == nil {
userDefaults.set(true, forKey: "enabledSound")
}
// 2
if userDefaults.value(forKey: "enabledVibration") == nil {
userDefaults.set(true, forKey: "enabledVibration")
}
// The right approach with register(defaults:)
let userDefaults = UserDefaults.standard
// 1
userDefaults.register(
defaults: [
"enabledSound": true,
"enabledVibration": true
]
)
print(userDefaults.bool(forKey: "enabledSound")) // print true
// The value is only set if the key is nil
let userDefaults = UserDefaults.standard
// 1
userDefaults.set(false, forKey: "enabledSound")
// 2
userDefaults.register(
defaults: [
"enabledSound": true,
"enabledVibration": true
]
)
print(userDefaults.bool(forKey: "enabledSound")) // print false
// The default values are not persist
let userDefaults = UserDefaults.standard
print(userDefaults.integer(forKey: "counter")) // print 0
// 1
userDefaults.register(
defaults: [
"counter": 5
]
)
print(userDefaults.integer(forKey: "counter")) // print 5
//
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment