[英]Supporting optional parameter value in Swift property wrapper
I have below property wrapper for user defaults,我有以下用户默认值的属性包装器,
@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)
}
}
}
I am defining it like,我是这样定义的,
struct MyUserDefaultsCommon{
@MyUserDefaultWrapper("yearOfBirth", defaultValue: 1980)
static var yearOfBirth: Int
}
And calling it like,并称它为,
MyUserDefaultsCommon.yearOfBirth = 2010
When I set default value to nil
build is failed with a sig abrt.当我将默认值设置为nil
时,构建失败并带有 sig abrt。
How can I restrict passing optional default value from property wrapper class?如何限制从属性包装器 class 传递可选默认值? Or is there any other way around?或者有没有其他办法?
How can I restrict passing optional default value from property wrapper class?如何限制从属性包装器 class 传递可选默认值?
This is (was) a bug in Swift.这是(曾经)Swift 中的错误。 It's been fixed, and should be in the next release of 5.1 .它已被修复,并且应该在 5.1 的下一个版本中。 You should not be able to pass nil
here.你不应该在这里传递nil
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.