You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
extension UserDefaults {
struct Key<Value> {
let key: String
init(_ key: String) {
self.key = key
}
}
func setValue<Value>(_ value: Value?, forKey key: Key<Value>) {
setValue(value, forKey: key.key)
}
func value<Value>(forKey key: Key<Value>) -> Value? {
if let v = value(forKey: key.key) as? Value {
return v
}
return nil
}
}
创建key
extension UserDefaults.Key where Value == Int {
static let ageKey = Self("ageKey")
}
extension UserDefaults.Key where Value == Bool {
static let okKey = Self("okKey")
}
使用方法
UserDefaults.standard.setValue(1, forKey: .ageKey)
let age = UserDefaults.standard.value(forKey: .ageKey) // 类型推断Int?
UserDefaults.standard.setValue(false, forKey: .okKey)
let isOk = UserDefaults.standard.value(forKey: .okKey) // 类型推断Bool?
print(age, isOk)