gpt4 book ai didi

swift4 - 如何将包含对象的数组保存到 UserDefaults

转载 作者:行者123 更新时间:2023-12-04 22:28:25 26 4
gpt4 key购买 nike

我的对象符合新的 Swift 4 Codeable协议(protocol)。如何在 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 保存 Array 的语法与 Codeable对象:

我的解决方案是将其编码为 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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45058048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com