这里我不会对这两个页面都有任何连接,这里我需要全局保存模型类,并在所有页面中的任何位置使用,直到app正在使用中,之后它可以清除数组中的数据但是我能够访问应用程序中所有页面中的任何位置,我尝试使用保存在var sortModel = [Sort]()
for (_, value) in sortJson as! [String: Any] {
self.sortModel.append(Sort.init(dict: value as! [String : Any]))
}
UserDefaults.standard.set(self.sortModel, forKey: "sorts")
崩溃。任何人都可以帮我解决这个问题吗?
{{1}}
答案 0 :(得分:0)
让您的Sort
结构符合Codable
,如:
struct Sort: Codable {
//...
}
然后你可以快速逃脱:
//Encode Sort to json data
if let jsonData = try? JSONEncoder().encode(sortModel) {
print("To Save:", jsonData)
//Save as data
UserDefaults.standard.set(jsonData,
forKey: "sorts")
}
//Read data for "sorts" key and decode to array of "Sort" structs
if let data = UserDefaults.standard.data(forKey: "sorts"),
let sorts = try? JSONDecoder().decode([Sort].self,
from: data) {
print("Retrieved:", sorts)
}
基本上,我们从json
中制作array
并将其另存为data
个对象。
然后,我们可以将其恢复为data
并重新创建排序struct
array
。
注意:如果struct
内嵌了一些阻止其编码为json
的类型,则此功能可能无效。
在这种情况下,请阅读: