【发布时间】:2016-07-21 20:29:18
【问题描述】:
我有这个奇怪的问题。我将自定义类对象保存在NSUserDefaults 中,并在检索数据时为对象的int 变量获得nil。下面是自定义类
class User {
var name: String?
var user_id: Int?
var account_id: Int?
var location: String?
}
我将对象另存为,
let defaults = NSUserDefaults.standardUserDefaults()
var data = NSKeyedArchiver.archivedDataWithRootObject([user]) // I can see the int values for the user objects here
defaults.setObject(data, forKey: "all_users")
检索数据为,
let defaults = NSUserDefaults.standardUserDefaults()
let data = defaults.dataForKey("all_users")
var users = [Users]()
if data != nil {
let userData = NSKeyedUnarchiver.unarchiveObjectWithData(data!) as! [Users]
for usr in userData {
print("\(usr.name!)") // Prints the name
print("\(usr.user_id!)") // Nil value here
users.append(usr)
}
}
我完全不知道这种行为的原因。
【问题讨论】:
-
你的类需要符合
NSCoding -
您可能需要编写自己的
Archiver。 stackoverflow.com/questions/2315948/… -
@Putz1103 我已经看到了那个解决方案,但是直到你在这里指出它才尝试。它正在工作。谢谢!
标签: ios swift nsuserdefaults custom-object