Why is the token nil
after I set is value?
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()
}
}
}
Instead of using self.token
in the set statement use newValue
.
set {
let encodedData = NSKeyedArchiver.archivedData(withRootObject: newValue)
UserDefaults.standard.set(encodedData, forKey: File.UserDefaults.token)
}
When calling self.token in set you are basically calling the get statement. To actually receive the value that is set you'll need to use newValue
. newValue is basically a hidden parameter of the set statement.