Swift3 将服务器响应存储在userdefaults中时…我收到错误消息
将服务器响应存储在userdefaults中时…我收到错误 由于未捕获异常而终止应用程序 “NSInvalidArgumentException”,原因:'-[\u SwiftValue encodeWithCoder::发送到实例的选择器无法识别 0x600002fe7720' 这是我的密码Swift3 将服务器响应存储在userdefaults中时…我收到错误消息,swift3,Swift3,将服务器响应存储在userdefaults中时…我收到错误 由于未捕获异常而终止应用程序 “NSInvalidArgumentException”,原因:'-[\u SwiftValue encodeWithCoder::发送到实例的选择器无法识别 0x600002fe7720' 这是我的密码 if let responseObject = response.array { print(responseObject) let bookingDetails = responseOb
if let responseObject = response.array {
print(responseObject)
let bookingDetails = responseObject[0].dictionary!
let myData = NSKeyedArchiver.archivedData(withRootObject:bookingDetails)
UserDefaults.standard.set(myData, forKey: "userJson")
}
请对响应进行编码并将其存储在userDefaults中,当您想要使用这些值时,请获取响应并解码
这可能对你有帮助 为了能够存档自定义类,类必须采用
NSCoding
。这就是错误消息告诉您的
JSON(在SwiftyJSON
中)是一个结构,它根本不能用NSKeyedArchiver
存档
删除
SwiftyJSON
和NSCoding
,改用Codable
。什么是bookingDetails
确切地说?[String:JSON]但是存储在userDefaults中的数据是空值……dataresponse没有存储在userDefaults中……如果让responseObject=response.array{print(responseObject)let bookingDetails=responseObject[0]。字典!let encodedData=try?jsonecoder()。encode(bookingDetails)UserDefaults.standard.set(encodedData,forKey:“details”)