Defaults
Defaults copied to clipboard
Setting optional values to nil doesn't work
extension Defaults.Keys {
static let foo = Key<Int?>("foo", default: 1)
}
Here I have some option that defaults to 1, but is optional.
Defaults[.foo] // => 1
Defaults[.foo] = 2
Defaults[.foo] // => 2
Defaults[.foo] = nil
Defaults[.foo] // => 1
Why would explicitly setting an optional to nil
make it reset to the default? Isn't that what reset()
is for? Logically it would make sense to have an option that has a default value, but can also be turned off.
I tried with an Enum:
enum OptionalKey: Defaults.Serializable {
case some(Int)
case none
}
But this fails as it doesn't conform to Defaults.Serializable
.
Is there no way to have both a default key, but also retain the ability to set it to nil?