显示 swiftyjson 解析数据的最佳方式?
Best way to display swiftyjson parsed data?
在已经通过 swiftyjson 解析了我的数据之后,我希望在 uitableview 中显示解析后的信息。假设我有一个从 json 文件中解析出来的名字列表。我希望这些名称分别显示在各自的单元格中,以允许用户查看所有名称。
我还假设,如果他们在解析后选择了正在显示字符串的选定单元格,我实际上可以将它们存储到核心数据对象中,将它们存储为可返回的字符串?问题是我在我创建的数组上使用了 .append 函数,我们将调用 names = [String]()
以实际允许值按单元格顺序排列。
但是当我这样做的时候,我注意到 cpu 的使用量出现了一个巨大的峰值,因为它不断地附加它们,让我们说名字是马特,第二个名字是约翰等等,然后它创造了一个新的情况数组每次。所以第一次它只读取 matt 然后下一个 println 将打印出 matt,john 然后下一个打印出 matt,john,tom 等等,直到 json 名称列表完成。
如果我有 500 个或更多名称,则需要 cpu 一段时间才能将所有这些名称处理到数组中。我知道必须有另一种方法,但我看到的所有引用都使用 .append 方法。所以我的代码是 names.append(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)
}
}
也许 Swift map
功能更有效
…
let json = JSON(data: jsonData!)
var nameList = [String]()
if let subJson = json["array"] as [Dictionary<String,NSObject>]? {
nameList = subJson.map { [=10=]["name"] as! String }
}
在已经通过 swiftyjson 解析了我的数据之后,我希望在 uitableview 中显示解析后的信息。假设我有一个从 json 文件中解析出来的名字列表。我希望这些名称分别显示在各自的单元格中,以允许用户查看所有名称。
我还假设,如果他们在解析后选择了正在显示字符串的选定单元格,我实际上可以将它们存储到核心数据对象中,将它们存储为可返回的字符串?问题是我在我创建的数组上使用了 .append 函数,我们将调用 names = [String]()
以实际允许值按单元格顺序排列。
但是当我这样做的时候,我注意到 cpu 的使用量出现了一个巨大的峰值,因为它不断地附加它们,让我们说名字是马特,第二个名字是约翰等等,然后它创造了一个新的情况数组每次。所以第一次它只读取 matt 然后下一个 println 将打印出 matt,john 然后下一个打印出 matt,john,tom 等等,直到 json 名称列表完成。
如果我有 500 个或更多名称,则需要 cpu 一段时间才能将所有这些名称处理到数组中。我知道必须有另一种方法,但我看到的所有引用都使用 .append 方法。所以我的代码是 names.append(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)
}
}
也许 Swift map
功能更有效
…
let json = JSON(data: jsonData!)
var nameList = [String]()
if let subJson = json["array"] as [Dictionary<String,NSObject>]? {
nameList = subJson.map { [=10=]["name"] as! String }
}