My Object符合新的
Swift 4 Codeable协议.如何在UserDefaults中保存这些对象的数组?
struct MyObject: Codeable { var name: String var something: [String] } myObjectsArray = [MyObject]() // filled with objects UserDefaults.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") } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。