我有一个班级说,
class GroupClass{
var groupId: String = ""
var groupName: String = ""
}
我希望能够将其对象存储在NSUserDefaults
中。我试过这种方式,
let group = GroupClass()
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(group, forKey: "group")
defaults.synchronize()
并按照以下方式检索
let defaults = NSUserDefaults.standardUserDefaults()
var group = defaults.objectForKey("group") as! GroupClass
它抛出了异常Using non-property obect
并崩溃了。在Swift中这样做的正确方法是什么?
还尝试了以下方式,
class GroupClass{
var groupId: String = ""
var groupName: String = ""
required init(coder aDecoder: NSCoder) {
self.groupId = aDecoder.decodeObjectForKey("groupId") as! String
self.groupName = aDecoder.decodeObjectForKey("groupName") as! String
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(self.groupId, forKey: "groupId")
aCoder.encodeObject(self.groupName, forKey: "groupName")
}
}
但是,let group = GroupClass(coder:NSCoder())
会产生问题。
答案 0 :(得分:2)
您无法将课程参考保存到userdefault
。小组是你班级的参考。为什么要保存它。它只是将你的课程指向内存。完成它的任务后它会被破坏。 userdefaults用于存储字符串,数组,字典等数据,您不需要在数据库中存储引用。我不这么认为。
您可以在userdefaults中设置group.groupId或group.groupName。然后,如果你想存储它,那么你可以在nsdata
NSKeyedArchiver
之前将其转换为nsuserdefault
,并在unarchive
需要时将其保存到NSKeyedUnArchiver
和`ssh expert\@x.x.x.x`
}。
希望这会有所帮助:)