为什么设置后的令牌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()
}
}
}
答案 0 :(得分:2)
不要在set语句中使用newValue
,而是使用set {
let encodedData = NSKeyedArchiver.archivedData(withRootObject: newValue)
UserDefaults.standard.set(encodedData, forKey: File.UserDefaults.token)
}
。
newValue
在set中调用self.token时,你基本上调用了get语句。要实际接收设置的值,您需要使用{{1}}。 newValue基本上是set语句的隐藏参数。