gpt4 book ai didi

Swift 错误 : 'NSInvalidArgumentException' , 原因: '-[_SwiftValue encodeWithCoder:]: unrecognized selector sent to instance 0x60000012abe0'

转载 作者:行者123 更新时间:2023-11-28 10:43:19 27 4
gpt4 key购买 nike

我有这个错误。我知道有些人已经在其他线程上回答了这个问题,但给出的答案似乎对我不起作用。

这是我的代码:

人物类:

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
}

我将不胜感激任何帮助

最佳答案

NSCoding 需要 NSObjectProtocol。只有类可以符合 NSObjectProtocol 并且您使用的是结构。即:

struct Event{
var date : String
var message : String
}

Soroush Khanlou 写了一篇关于此的好文章 here

关于Swift 错误 : 'NSInvalidArgumentException' , 原因: '-[_SwiftValue encodeWithCoder:]: unrecognized selector sent to instance 0x60000012abe0',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49481984/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com