0
我想添加一个回退函数加载类的存档副本如果属性未设置。从NSUserDefaults加载归档值,如果它不存在通过覆盖getter
我已经得到了setter工作正常,所以它存储的价值(和所有的NSCoding工作正常),但如果我试图引用这个地方,而不是使用实际的变量属性,它总是从NSUserDefaults加载。
这里是我到目前为止有:
public var currentUser: User? {
get {
var user = self.currentUser
//^this totally blows it up
if (user == nil) {
user = User.init(name: "") as? User
if let data = NSUserDefaults.standardUserDefaults().objectForKey("currentUser") as? NSData {
let unarc = NSKeyedUnarchiver(forReadingWithData: data)
user = unarc.decodeObjectForKey("root") as? User
}
}
return user
}
set(value) {
self.currentUser = value
NSUserDefaults.standardUserDefaults().setObject(NSKeyedArchiver.archivedDataWithRootObject(value!), forKey: "currentUser")
}
}
您需要显示用户类声明 –
为什么?它有几个基本属性和一个init方法。我可以添加它,但我现在在移动设备上,无法访问。 – brandonscript
因为它需要NSCoding兼容,你需要将它保存为NSData –