Arrays 字典保存错误“;SwiftValue encodeWithCoder::无法识别的选择器发送到实例";
我想保存一个save a dictionary,但我一直收到以下错误消息:“SwiftValue encodeWithCoder::无法识别的选择器发送到实例”。以下是我如何保存字典的方法:Arrays 字典保存错误“;SwiftValue encodeWithCoder::无法识别的选择器发送到实例";,arrays,swift,dictionary,nsuserdefaults,Arrays,Swift,Dictionary,Nsuserdefaults,我想保存一个save a dictionary,但我一直收到以下错误消息:“SwiftValue encodeWithCoder::无法识别的选择器发送到实例”。以下是我如何保存字典的方法: func savePlaces(){ let placesData = NSKeyedArchiver.archivedData(withRootObject: Resultaat?.reisdelen) UserDefaults.standard.set(placesData, for
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()
}
}
}
如何尝试加载字典:
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) } }
享受吧 您好,Emre-Ciftci,我有一个错误:“在“Array”上引用实例方法“encode”要求“reisedelen”符合“Encodable”。您知道如何解决这个问题吗?只需遵循“可编码”协议而不是可解码协议即可“可编码”是“可编码”和“可解码”的混合。