gpt4 book ai didi

ios - 排序 SwiftyJSON 结果

转载 作者:搜寻专家 更新时间:2023-10-31 19:30:14 24 4
gpt4 key购买 nike

我正在使用 SwiftyJSON 填充工作正常的 TableView ,但我正在努力寻找一种对数据进行排序的方法。我已经放置了我的代码,因为我觉得有一种更好的方法来存储和显示数据,因为目前我将它放入每个 json 标记的单独数组中,这使得排序变得困难。对 swift 非常陌生,因此不胜感激。我可以在使用之前对 json 结果进行排序吗,或者是否有更好的存储方式?

我想根据时间对下面的内容进行排序以打印到表格 View ,因为它只是按顺序打印。

示例 json:

[
{
"name": "John Doe",
"time": 13683
},
{
"name": "Dave Smith",
"time": 20683
},
{
"name": "Craig David",
"time": 200
}
]

当前方法(无排序):

// Global variables
var tableName = [String]()
var tableTime = [String]()

func getJSON(){
// Removed all the code here to get the JSON

let json = JSON(data: result!)

dispatch_async(dispatch_get_main_queue(), {
for item in json.arrayValue {
if item["name"].stringValue != "" {
self.tableName.append(item["name"].stringValue )
self.tableTime.append(item["time"].stringValue)
}
}
dispatch_async(dispatch_get_main_queue(),{
self.tableView.reloadData()
})
})
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableName.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->
UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as!TableViewCell
// Configure the cell...

cell.name.text = tableName[indexPath.row]
cell.time.text = tableTime[indexPath.row]

return cell

}
}

最佳答案

使用自定义结构作为数据模型

struct Data {
var name : String
var time : String
}

那么你只有一个数组需要排序

// Global variables
var dataSource = [Data]()

func getJSON(){
// Removed all the code here to get the JSON

let json = JSON(data: result!)
for item in json.arrayValue {
let name = item["name"].stringValue
if !name.isEmpty {
self.dataSource.append(Data(name:name, time:item["time"].stringValue))
}
}
self.dataSource.sortInPlace{ $0.name < $1.name}
dispatch_async(dispatch_get_main_queue(),{
self.tableView.reloadData()
})
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataSource.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->
UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as!TableViewCell
// Configure the cell...

let data = dataSource[indexPath.row]
cell.name.text = data.name
cell.time.text = data.time

return cell

}
}

关于ios - 排序 SwiftyJSON 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35381856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com