Вы объявили wrappedValue
необязательным, например, Value?
. Измените его на необязательный, и ошибка будет go исчезнуть:
@propertyWrapper struct UserDefaultsBacked<Value> {
let key: String
let storage: UserDefaults = .standard
var defaultValue: Value
var wrappedValue: Value { // not `Value?`
get {
let value = storage.value(forKey: key) as? Value
return value ?? defaultValue
}
set { storage.setValue(newValue, forKey: key) }
}
}
В качестве альтернативы, вы можете оставить wrappedValue
как есть, но тогда вам придется объявить snapStatus
в качестве необязательного:
var snapStatus: Bool?
Я думаю, что устранение необязательных вариантов - это путь к go, но я включаю это для полноты картины.