支持Swift属性包装器中的可选参数值



我有下面的属性包装器,用于用户默认值,

@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时,生成失败并带有一个信号。

如何限制从属性包装类传递可选默认值?或者还有其他办法吗?

如何限制从属性包装类传递可选默认值?

这是Swift中的一个错误。它已经修复,应该在5.1的下一个版本中。你不应该在这里通过nil

最新更新