如何将字典数组存储到类变量中?

时间:2019-04-23 04:07:08

标签: arrays json swift dictionary

我有一个从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中?我不希望使用结构,因为字典的结构可能会有所不同。

1 个答案:

答案 0 :(得分: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应该是一个字典,并且该顶级字典具有您想要的实际字典数组的键,那么您需要相应地修复代码。