arrays - 字典保存错误“SwiftValue encodeWithCoder:]: unrecognized selector sent to instance”
问题描述
我想保存一个字典,但我不断收到此错误消息:“SwiftValue encodeWithCoder:]: unrecognized selector sent to instance”。这就是我尝试保存字典的方式:
func savePlaces(){
let placesData = NSKeyedArchiver.archivedData(withRootObject: Resultaat?.reisdelen)
UserDefaults.standard.set(placesData, forKey: "Reis")
}
我如何尝试加载字典:
var Reis = [reisdelen]()
func loadPlaces(){
let placesData = UserDefaults.standard.object(forKey: "Reis") as? NSData
if let placesData = placesData {
let placesArray = NSKeyedUnarchiver.unarchiveObject(with: placesData as Data) as? [reisdelen]
if let placesArray = placesArray {
Reis = placesArray
TableView.reloadData()
}
}
}
我的结构:
struct reismogelijkheden: Decodable {
let reisdelen: [reisdelen]?
let reistijd: reistijd?
let reistijdActueel : reistijdActueel?
let aantalOverstappen: Int?
let vertrektijd: String?
let vertrektijdVertraging: vertrektijdVertraging?
let aankomsttijd: String?
}
struct reisdelen: Decodable {
let vervoerder: String?
let richting: String?
let treinnummer: String?
let lijn: String?
let stops: [stops]?
let modaliteit: modaliteit?
let travelTimeInMinutes: Int?
let travelDistanceInMeters: Int?
}
解决方案
您可以将模型保存为UserDefaults
:
首先,您应该创建模型的实例
然后你可以保存你的模型
UserDefaults
喜欢:let encoder = JSONEncoder() if let encoded = try? encoder.encode(modelInstance) { let defaults = UserDefaults.standard defaults.set(encoded, forKey: "Reis") }
UserDefaults
你可以像这样得到模型if let savedItem = defaults.object(forKey: "Reis") as? Data { let decoder = JSONDecoder() if let loadedItem = try? decoder.decode(YourModel.self, from: savedItem) { print(loadedItem) } }
我希望这是你试图找到的答案。
享受!
推荐阅读
- python - Pandas - take() 不接受布尔索引器
- javascript - 渲染数组对象列表(Javascript)
- html - 在单个表格元素中调整图像高度
- php - 如何使用 php regex 执行多个搜索?
- node.js - post方法节点js服务器中的请求正文为空
- go - 在运行 exec 时做一些事情
- amazon-textract - AWS Textract - GetDocumentAnalysisRequest 仅返回文档第一页的正确结果
- javascript - acrobat 调试器中的简单脚本 SyntaxError: missing ; 声明之前
- python - pandas - 获得多个最大值
- mysql - mysql查询可以在哪里进行限制吗?