Adding a Default Value to the User Defaults Key
Tuesday, 22 July 2025
extension UserDefaults {
public struct Key<Value> {
fileprivate let name: String
fileprivate let `default`: Value
public init(_ name: String, default: Value) {
self.name = name
self.default = `default`
}
}
}
extension UserDefaults {
public func value<Value>(for key: Key<Value>) -> Value {
object(forKey: key.name) as? Value ?? key.default
}
}
extension UserDefaults {
public func set<Value>(_ value: Value, for key: Key<Value>) {
set(value, forKey: key.name)
}
public func removeValue<Value>(for key: Key<Value>) {
removeObject(forKey: key.name)
}
}