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

Posted

技术标签:

【中文标题】显示 swiftyjson 解析数据的最佳方式?【英文标题】:Best way to display swiftyjson parsed data? 【发布时间】:2015-06-28 08:05:25 【问题描述】:

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

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

但是当我这样做时,我注意到 cpu 使用率出现了巨大的峰值,因为它一直在附加它们,让我们说名字是马特,第二个名字是约翰等等,然后它每次都会创建一个新的数组情况。所以第一次它只读取 matt 然后下一个 println 将打印出 matt, john 然后下一个打印出 matt, john, tom 等等,直到完成 json 名称列表。

如果我有 500 个或更多名称,则 cpu 需要一段时间才能将所有这些名称处理到数组中。我知道必须有另一种方法,但我看到的所有引用都使用 .append 方法。所以我的代码是names.append(Name)。 Name 是从 swiftyjson 解析的字符串。从那里我实际上能够填充表格视图,这很好,它最终可以正确显示,但是设备需要一段时间才能填充,因为它首先需要在每次调用解析时添加所有 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】:

也许 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 

【讨论】:

我的问题更多在于应用程序的挂断实际上将 500 个名称附加到一个数组中 1 比 1。这个映射函数会改变吗?或者有没有更好的方法在 tableview 中查看所有 json 数据? 基本上 map 函数的作用与循环相同,但方式更有效。为避免阻塞主线程,请考虑在后台线程中加载数据 除了附加一个数组之外,还有另一种可能的方式让我直接从 json 文件读取到 tableview 吗?我所看到的只是追加的示例,但由于每次检查新数据时追加数组可能需要一些时间,因此效率似乎相当低。我确实喜欢映射的想法,但它看起来确实更有效。 无论如何你都必须映射数据,因为表格视图需要一个可打印对象的数组——一个字符串数组或字典/具有适当键/属性的自定义类 所以我想这可以回答这两个问题。我希望 tableview 实际上可以直接以某种方式提取信息。也许如果我这样做,以便我每周一次将数据解析到数组中一次?我希望能定期完成。但我不希望用户每次都必须等待数组重新添加以重新检查更新的数据。

以上是关于显示 swiftyjson 解析数据的最佳方式?的主要内容,如果未能解决你的问题,请参考以下文章

Swift 使用 Alamofire 和 SwiftyJSON 解析 Json [关闭]

从 SwiftyJSON API 分配解析的 JSON 显示错误

SwiftyJson 是不是可以更快地解析 swift json?

使用 Alamofire 和 SwiftyJSON 正确解析具有多个对象的 JSON 数组

UITableView 不使用 SwiftyJSON 和 Alamofire 加载数据

通过解析 JSON-SwiftyJSON 创建一个 Class 对象数组