【发布时间】:2016-04-23 09:58:36
【问题描述】:
我有一个班级说,
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()) 有问题。
【问题讨论】:
-
为此使用 NSKeyedArchiver
-
@EICaptain 能否提供演示代码,我是 Swift 新手。
-
第二个答案是 swift stackoverflow.com/questions/19720611/…
-
@EICaptain 我试过这种方式
let group = GroupClass(coder:NSCoder())这会出现问题 -
完整的解决方案在那个答案中......仔细检查..可能有一些错误
标签: ios swift swift2 nsuserdefaults swift2.2