显示swiftyjson解析数据的最佳方法?

时间:2015-06-28 08:05:26

标签: swift swifty-json

在通过swiftyjson解析了我的数据后,我希望在uitableview中显示已解析的信息。假设我有一个我从json文件中解析出的名称列表。我希望这些名称在各自的单元格中显示,以允许用户查看它们。

我还假设如果他们在解析后选择了正在显示字符串的所选单元格,那么我实际上可以将那些存储到核心数据对象中,将它们存储为可返回的字符串?问题是我使用了.append函数到我创建的数组上,我们将调用names = [String]()来实际允许值实际来自单元格。

但是当我这样做时,我注意到cpu使用量的大幅增加这样做,因为它继续按顺序添加它们让我们说第一个名字是matt第二个名字是john等等然后它每次创建数组的新情况。所以第一次读取亚光然后下一个println将打印出亚光,约翰然后下一个打印出亚光,约翰,汤姆等等,直到json名称列表完成。

如果我有500个或更多名称,则需要cpu一段时间才能将所有这些名称处理到数组中。我知道必须有另一种方式,但我看到的所有引用都使用.append方法。所以我的代码是names.append(Name)。 Name是来自swiftyjson的解析字符串。从那里我实际上能够填充tableview,它最终正确显示,但它需要设备一段时间来填充,因为它首先需要处理每次调用解析时添加所有500个名称。我希望每次都能重新检查500个名字,以防新的名字被添加。这个目前都存储为本地json文件。

我正在使用的代码如下所示,我可以找出UItableview部分,但更多的是附加数组是否是从swiftyjson显示解析数据的最佳和最有效的方法。

let path = NSBundle.mainBundle().pathForResource("List", ofType: "json")
let jsonData = NSData(contentsOfFile: path!, options: NSDataReadingOptions.DataReadingMappedIfSafe, error: nil)
let json = JSON(data: jsonData!)
for (key, subJson) in json["array"] {
    if let Name = subJson["Name"].string {
        NameList.append(Name)
        println(NameList)
    }
}

1 个答案:

答案 0 :(得分:0)

也许Swift map功能更有效

…
let json = JSON(data: jsonData!)
var nameList = [String]()
if let subJson = json["array"] as [Dictionary<String,NSObject>]? {
  nameList = subJson.map { $0["name"] as! String }
}