Releases: sindresorhus/Defaults
Releases · sindresorhus/Defaults
v3.0.0
v2.0.2
v2.0.1
v2.0.0
v1.0.0
Key observation
You can now observe changes to keys in a strongly-typed fashion. It even preserves the type of the oldValue
and newValue
keys in the change event.
extension Defaults.Keys {
static let isUnicornMode = Key<Bool>("isUnicornMode", default: false)
}
let observer = defaults.observe(.isUnicornMode) { change in
// Initial event
print(change.oldValue)
//=> false
print(change.newValue)
//=> false
// First actual event
print(change.oldValue)
//=> false
print(change.newValue)
//=> true
}
defaults[.isUnicornMode] = true
Shorter syntax
extension Defaults.Keys {
- static let quality = Defaults.Key<Double>("quality", default: 0.8)
+ static let quality = Key<Double>("quality", default: 0.8)
}
Support for alternative UserDefaults suites
let extensionDefaults = UserDefaults(suiteName: "com.unicorn.app")!
extension Defaults.Keys {
static let isUnicorn = Key<Bool>("isUnicorn", default: true, suite: extensionDefaults)
}
defaults[.isUnicorn]
//=> true
// Or
extensionDefaults[.isUnicorn]
//=> true
Registers default values with the native UserDefaults
When you use, for example:
extension Defaults.Keys {
static let quality = Key<Double>("quality", default: 0.8)
}
It will register 0.8
as the default value with UserDefaults, which can then be used in other contexts, like binding in Interface Builder.