swift4 – 如何将带有对象的数组保存到UserDefaults

swift4 – 如何将带有对象的数组保存到UserDefaults,第1张

概述My Object符合新的 Swift 4 Codeable协议.如何在UserDefaults中保存这些对象数组? struct MyObject: Codeable { var name: String var something: [String]}myObjectsArray = [MyObject]() // filled with objectsUserDef My Object符合新的 Swift 4 Codeable协议.如何在UserDefaults中保存这些对象的数组?

struct MyObject: Codeable {    var name: String    var something: [String]}myObjectsArray = [MyObject]() // filled with objectsUserDefaults.standard.set(myObjectsArray,forKey: "user_filters")

错误

Terminating app due to uncaught exception
‘NSinvalidargumentexception’,reason: ‘Attempt to insert non-property
List object

解决方法 哇,我得到了它的工作:

这是使用可编辑对象保存数组的Swift 4语法:

我的解决方案是将其编码为JsON对象并保存:

static var getAllObjects: [MyObject] {      let defaultObject = MyObject(name: "My Object name")      if let objects = UserDefaults.standard.value(forKey: "user_objects") as? Data {         let decoder = JsONDecoder()         if let objectsDecoded = try? decoder.decode(Array.self,from: objects) as [MyObject] {            return objectsDecoded         } else {            return [defaultObject]         }      } else {         return [defaultObject]      }   } static func saveAllObjects(allObjects: [MyObject]) {      let encoder = JsONEncoder()      if let encoded = try? encoder.encode(allObjects){         UserDefaults.standard.set(encoded,forKey: "user_objects")      } }
总结

以上是内存溢出为你收集整理的swift4 – 如何将带有对象的数组保存到UserDefaults全部内容,希望文章能够帮你解决swift4 – 如何将带有对象的数组保存到UserDefaults所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1010563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存