如何在iOS中从一个页面传递模型类数据?

时间:2018-03-16 13:20:43

标签: ios swift

这里我不会对这两个页面都有任何连接,这里我需要全局保存模型类,并在所有页面中的任何位置使用,直到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}}

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的类型,则此功能可能无效。

在这种情况下,请阅读: