在已经通过迅捷技术解析了我的数据之后,我希望在uitableview中显示已解析的信息。假设我有一个从json文件中解析出来的名称列表。我希望这些名称显示在各自的单元格中,以允许用户查看所有这些名称。
我还假设,如果他们在解析后选择了正在显示字符串的选定单元格,我实际上可以将这些单元格存储到核心数据对象中,将它们作为可返回的字符串存储?问题是,我在我创建的数组上使用了.append函数,我们将调用names = [String]()来实际允许值按照单元格的顺序排列。
但是当我这样做的时候,我注意到cpu的使用率有了很大的提高,因为它一直在按照顺序附加它们,比如名字是matt,第二个名字是john等等,然后每次都会创建一个数组的新情况。所以,当它第一次读到matt时,下一个println会打印出来matt,john然后下一个打印出来matt,john,tom等等,直到json的名字列表完成为止。
如果我有500个或更多的名称,那么cpu需要一段时间才能将所有这些名称处理到数组中。我知道肯定有另外一种方法,但是我看到的所有引用都使用.append方法。所以我的代码是names.append(名字)。名字是一个解析的字符串从金丝提斯。从这里开始,我实际上能够填充tableview,这是很好的,它最终正确地显示,但是设备需要一段时间才能填充,因为它首先需要处理每次调用解析时添加所有500个名称。我希望每次都允许重新检查500个名字,以防增加新的名字。这所有存储当前作为本地json文件已经。
下面是我使用的代码,我可以找出UItableview部分,但更多的问题是,追加数组是否是显示已解析数据的最佳和最有效的方式。
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)
}
}发布于 2015-06-28 09:08:57
也许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 }
}https://stackoverflow.com/questions/31097431
复制相似问题