【发布时间】:2018-03-25 23:16:49
【问题描述】:
我有这个错误。我知道有些人已经在其他线程上回答了这个问题,但给出的答案似乎对我不起作用。
这是我的代码:
人物类:
class People: NSObject, NSCoding {
var firstName : String
var lastName : String
var events : [Event]
init(firstName: String, lastName: String) {
self.firstName = firstName
self.lastName = lastName
self.events = []
}
required init (coder aDecoder: NSCoder) {
firstName = aDecoder.decodeObject(forKey: "firstName") as! String
lastName = aDecoder.decodeObject(forKey: "lastName") as! String
events = aDecoder.decodeObject (forKey: "events") as! [Event]
}
func encode(with aCoder: NSCoder) {
aCoder.encode(firstName, forKey: "firstName")
aCoder.encode(lastName, forKey: "lastName")
aCoder.encode(events, forKey: "events")
}
}
这里是我调用保存文件的地方:
func SaveMyPeople(){
let Defaults = UserDefaults.standard
let SavedData = NSKeyedArchiver.archivedData(withRootObject: ArrayPeople)
Defaults.set(SavedData, forKey: "People")
}
这是事件结构:
struct Event{
var date : String
var message : String
}
如果我能得到任何帮助,我们将不胜感激
【问题讨论】:
-
这不是问题,但您在
required init?(coder aDecoder: NSCoder)中缺少super.init(coder: aDecoder),并且在init的签名中也缺少?。
标签: swift nsuserdefaults nscoding