var со значением nil с использованием набора протоколов get - PullRequest
0 голосов
/ 06 июня 2018

Почему токен nil после того, как я установил, является значением?

var token: Token {
    set {
        let encodedData = NSKeyedArchiver.archivedData(withRootObject: self.token)
        UserDefaults.standard.set(encodedData, forKey: File.UserDefaults.token)
    }
    get {
        if let data = UserDefaults.standard.data(forKey:  File.UserDefaults.token),
            let obj = NSKeyedUnarchiver.unarchiveObject(with: data) as? Token {
            return obj
        } else {
            return Token()
        }
    }
}

1 Ответ

0 голосов
/ 06 июня 2018

Вместо использования self.token в операторе set используйте newValue.

set {
    let encodedData = NSKeyedArchiver.archivedData(withRootObject: newValue)
    UserDefaults.standard.set(encodedData, forKey: File.UserDefaults.token)
}

При вызове self.token в наборе вы в основном вызываете инструкцию get.Чтобы фактически получить установленное значение, вам нужно использовать newValue.newValue - это в основном скрытый параметр оператора set.

...