プロパティが設定されていない場合に、アーカイブされたクラスのコピーをロードするフォールバック関数を追加しようとしています。
セッターが値を保存するように正常に動作しています (そしてすべての 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")
}
}