填写表格后,我将所有内容输入NSDictionary。 如果我将其注释掉,我所有其他项目都可以毫无问题。
其中一个属于类别。我对其进行了编码,但不断收到错误
encodeWithCoder:]: unrecognized selector sent to instance 0x1c80bbe40'
类别项目是Codeable
的子类。
保存。
let playerDict : NSDictionary = [
"category" : CategoryItems(name: categoryData[0].name, image: categoryData[0].image, type: categoryData[0].type),
]
class PlayerModel: NSObject, NSCoding {
var category: CategoryItems?
init(json: NSDictionary) {
if let category = json["category"] as? CategoryItems {
self.category = category
}
}
}
required init?(coder aDecoder: NSCoder) {
if let category = aDecoder.decodeObject(forKey: "category") as? CategoryItems {
self.category = category
}
}
func encode(with aCoder: NSCoder) {
if let category = self.category {
aCoder.encode(category, forKey: "category")
}
}
型号:
struct CategoryItems: Codable {
var name : String
var image : String
var type : playerType
}
答案 0 :(得分:1)
主要问题是您不能对结构使用NSCoding
。采用NSCoding
的对象必须是NSObject
的子类。
我建议完全放弃NSCoding
并在课堂上也使用Codable
。也许您可以放弃NSObject
继承,甚至成为类。