在 Swift 属性 包装器中支持可选参数值
Supporting optional parameter value in Swift property wrapper
我有以下 属性 用户默认值包装器,
@propertyWrapper
class MyUserDefaultWrapper<T> {
let key: String
let defaultValue: T
init(_ key: String, defaultValue: T) {
self.key = key
self.defaultValue = defaultValue
}
var wrappedValue: T {
get {
let suit = UserDefaults.standard
return suit?.object(forKey: key) as? T ?? defaultValue
}
set {
let suit = UserDefaults.standard
suit?.set(newValue, forKey: key)
}
}
}
我是这样定义的,
struct MyUserDefaultsCommon{
@MyUserDefaultWrapper("yearOfBirth", defaultValue: 1980)
static var yearOfBirth: Int
}
并且这样称呼它,
MyUserDefaultsCommon.yearOfBirth = 2010
当我将默认值设置为 nil
时,构建失败并出现 sig abrt。
如何限制从 属性 包装器 class 传递可选默认值?或者有其他办法吗?
How can I restrict passing optional default value from property wrapper class?
This is (was) a bug in Swift. It's been fixed, and should be in the next release of 5.1。你应该不能在这里传递nil
。
我有以下 属性 用户默认值包装器,
@propertyWrapper
class MyUserDefaultWrapper<T> {
let key: String
let defaultValue: T
init(_ key: String, defaultValue: T) {
self.key = key
self.defaultValue = defaultValue
}
var wrappedValue: T {
get {
let suit = UserDefaults.standard
return suit?.object(forKey: key) as? T ?? defaultValue
}
set {
let suit = UserDefaults.standard
suit?.set(newValue, forKey: key)
}
}
}
我是这样定义的,
struct MyUserDefaultsCommon{
@MyUserDefaultWrapper("yearOfBirth", defaultValue: 1980)
static var yearOfBirth: Int
}
并且这样称呼它,
MyUserDefaultsCommon.yearOfBirth = 2010
当我将默认值设置为 nil
时,构建失败并出现 sig abrt。
如何限制从 属性 包装器 class 传递可选默认值?或者有其他办法吗?
How can I restrict passing optional default value from property wrapper class?
This is (was) a bug in Swift. It's been fixed, and should be in the next release of 5.1。你应该不能在这里传递nil
。