Swift3 将服务器响应存储在userdefaults中时…我收到错误消息

Swift3 将服务器响应存储在userdefaults中时…我收到错误消息,swift3,Swift3,将服务器响应存储在userdefaults中时…我收到错误 由于未捕获异常而终止应用程序 “NSInvalidArgumentException”,原因:'-[\u SwiftValue encodeWithCoder::发送到实例的选择器无法识别 0x600002fe7720' 这是我的密码 if let responseObject = response.array { print(responseObject) let bookingDetails = responseOb

将服务器响应存储在userdefaults中时…我收到错误

由于未捕获异常而终止应用程序 “NSInvalidArgumentException”,原因:'-[\u SwiftValue encodeWithCoder::发送到实例的选择器无法识别 0x600002fe7720'

这是我的密码

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”)