Поддержка необязательного значения параметра в оболочке свойства Swift - PullRequest
1 голос
/ 01 ноября 2019

У меня есть свойство оболочки ниже для значений по умолчанию,

@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.

Как я могу ограничить передачу необязательного значения по умолчанию из класса оболочки свойства? Или есть другой путь?

1 Ответ

2 голосов
/ 06 ноября 2019

Как я могу ограничить передачу необязательного значения по умолчанию из класса оболочки свойства?

Это (было) ошибка в Swift. Это исправлено, и должно быть в следующей версии 5.1 . Вы не должны быть в состоянии передать nil здесь.

...