gpt4 book ai didi

SWIFT 对具有特定对象的不同对象集合的单元格进行排序

转载 作者:行者123 更新时间:2023-11-28 13:11:44 25 4
gpt4 key购买 nike

所以基本上,我有一个调用 JSON Web 服务的函数,并使用 SwiftyJSON 收集填充我的 TableView 所需的所有信息,以及我的 DetailViewController 所需的其他信息。我收集的一些信息示例包括条目的标题、时间、ID 和震级。我想知道如何对 tableView 进行排序,以便第一个单元格显示最高幅度,一直到最后一个单元格显示最低幅度。

我一直在寻找一种方法来执行此操作,但我的运气并不好,因为 JSON 的格式化方式是一个包含 50 个字典的数组。我收集的 Magnitudes 是 50 个字符串,而不是数组。

这是我的代码:

  var info = [AppModel]()



func getEarthquakeInfo(completion: (results : NSArray?) ->Void ){


DataManager.getEarthquakeDataFromFileWithSuccess {
(data) -> Void in

let json = JSON(data: data)


if var JsonArray = json.array {
JsonArray.removeAtIndex(0)

for appDict in JsonArray {
// parsing
var ids: String? = appDict["id"].stringValue
var title: String? = appDict["title"].stringValue
var time: String? = appDict["time"].stringValue
var lattitude: String? = appDict["lat"].stringValue
var longitude: String? = appDict["lng"].stringValue
var north: String? = appDict["north"].stringValue
var west: String? = appDict["west"].stringValue
var mag: String? = appDict["mag"].stringValue
var depth: String? = appDict["depth"].stringValue
var timeStamp: String? = appDict["timestamp"].stringValue
// Splitting up title string into 2 parts
let newString = title!.stringByReplacingOccurrencesOfString(" ", withString: " - ", options: NSStringCompareOptions.LiteralSearch, range: nil)
var title2strings = newString.componentsSeparatedByString(" - ")
var scale = title2strings[0]
var location = title2strings[1]
// replacing M in scale string with Richter Scale
let scaleString = scale.stringByReplacingOccurrencesOfString("ML", withString: "Magnitude", options: NSStringCompareOptions.LiteralSearch, range: nil)
let scaleString2 = scaleString.stringByReplacingOccurrencesOfString("mb", withString: "Magnitude", options: NSStringCompareOptions.LiteralSearch, range: nil)
let scaleString3 = scaleString2.stringByReplacingOccurrencesOfString("Mw", withString: "Magnitude", options: NSStringCompareOptions.LiteralSearch, range: nil)
let scaleString4 = scaleString3.stringByReplacingOccurrencesOfString("MD", withString: "Magnitude", options: NSStringCompareOptions.LiteralSearch, range: nil)
let scaleString5 = scaleString4.stringByReplacingOccurrencesOfString("M", withString: "Magnitude", options: NSStringCompareOptions.LiteralSearch, range: nil)
//Formatting the date
var date = NSDate(dateString: time!).getDatePart()
// sorting

// Collecting all the information
var information = AppModel(idEarth: ids, title: title, time: date, lat: lattitude, lng: longitude, north: north!, west: west, mag: mag, depth: depth, timeStamp: timeStamp, location: location, scale: scaleString5)


self.info.append(information)
completion(results: self.info)
}


}

}

}




override func viewDidLoad() {
super.viewDidLoad()
//register custom cell

getEarthquakeInfo { (info) in
self.tableView.reloadData()


dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()

}
}


}




override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: TheCustomCellTableViewCell = tableView.dequeueReusableCellWithIdentifier("CELL", forIndexPath: indexPath) as TheCustomCellTableViewCell
cell.Location.text = info[indexPath.row].location
cell.Scale.text = info[indexPath.row].scale
cell.Time.text = info[indexPath.row].time
return cell

}

如果有人能为我指明正确的方向,我将不胜感激。

最佳答案

在返回完成处理程序之前如何对 MapModel 数组进行排序?

self.info.sort({$0.mag > $1.mag})
completion(results: self.info)

关于SWIFT 对具有特定对象的不同对象集合的单元格进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31036413/

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