gpt4 book ai didi

swift - 无法在自定义 UserDefaults 中保存结构 - 错误编码

转载 作者:行者123 更新时间:2023-11-28 14:17:14 26 4
gpt4 key购买 nike

填写完表格后,我将所有内容都输入到 NSDictionary 中。如果我将其注释掉,我所有其他项目都可以保存。

其中之一是类别。我对其进行编码,但不断收到错误

encodeWithCoder:]: 无法识别的选择器发送到实例 0x1c80bbe40'

Category Items 是 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
}

最佳答案

主要问题是您不能将 NSCoding 与结构一起使用。采用 NSCoding 的对象必须是 NSObject 的子

我建议完全放弃 NSCoding 并为该类使用 Codable。也许你可以放弃 NSObject 继承甚至是一个类。

关于swift - 无法在自定义 UserDefaults 中保存结构 - 错误编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52129881/

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