【问题标题】:How to store array of dictionaries into class variable?如何将字典数组存储到类变量中?
【发布时间】:2019-04-23 04:07:08
【问题描述】:

我有一个从 JSON 文件中读取的字典数组,如下所示。我想将该值(jsonResult)存储到类变量中,以便我可以使用它来填充表格视图。但是,我不太明白如何存储该值。

这是我获取字典数组 (jsonResult) 的方式:

      if let path = Bundle.main.path(forResource: filename, ofType: "json") {
        do {
            let data = try Data(contentsOf: URL(fileURLWithPath: path), options: .mappedIfSafe)
            let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as! [String:Any]
            self.tableData = jsonResult // WHAT GOES HERE?
        } catch {
            // handle error
        }
    }

这是我的类变量,我想将我的字典数组存储到:

var tableData = [Dictionary<String, String>]()

如何正确地将 jsonResult 存储到 tableData 中?我不想使用结构,因为字典的结构可能会有所不同。

【问题讨论】:

    标签: arrays json swift dictionary


    【解决方案1】:

    您声明 JSON 是一个字典数组,但您将 JSONSerialization.jsonObject 的结果转换为一个字典。由于您似乎期望一个包含字符串键和值的字典数组,因此请相应地转换结果。但要安全地做。使用 JSON 时切勿使用 !

    if let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as? [[String:String]] {
        self.tableData = jsonResult
    } else {
        // Error - unexpected JSON result
    }
    

    这假设您想要 JSON 结果的顶级。如果实际上 jsonResult 应该是一个字典,并且该顶级字典具有您想要的实际字典数组的键,那么您需要相应地修复代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 2014-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多