gpt4 book ai didi

ios - swift:从 JSON 解析的 Alphabetiz 数据

转载 作者:行者123 更新时间:2023-11-28 06:29:38 26 4
gpt4 key购买 nike

我在 Swift2 中编写了自己的函数来解析 JSON。解析 JSON 后,从 JSON 中提取的数据列表将显示在我的应用程序的 tableView 中。我想弄清楚如何按字母顺序显示这些数据。我认为这需要在我在函数中调用的 append 方法之前的某个地方发生。我想这需要是一个 sort 函数,但我无法在 Swift2 中找出正确的排序函数来正确执行它。感谢我能得到的任何帮助!这是我的 parseJSON 函数:

 func parseJSON(){
do{
let data = NSData(contentsOfURL: NSURL(string: "https://jsonblob.com/api/jsonBlob/580d0ccce4b0bcac9f837fbe")!)

let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)

for anItem in jsonResult as! [Dictionary<String, AnyObject>]{

let mifiName2 = anItem["name"] as! String
let mifiId = anItem["employeeId"] as! Int

let newName = Name(mifiName: mifiName2, mifiId: mifiId)
nameOfMifi.append(newName)
//print("Name: \(newName)")

}
}
catch let error as NSError{
print(error.debugDescription)
}
}

最佳答案

Array 中的所有对象 append 意味着在 for 循环之后,您需要对数组进行排序 .

for anItem in jsonResult as! [Dictionary<String, AnyObject>]{

let mifiName2 = anItem["name"] as! String
let mifiId = anItem["employeeId"] as! Int

let newName = Name(mifiName: mifiName2, mifiId: mifiId)
nameOfMifi.append(newName)
//print("Name: \(newName)")
}

//Now you need to sort your array on the basis of name like this
nameOfMifi.sortInPlace { $0.mifiName < $1.mifiName }

编辑:正如@vadian 建议不要使用 NSData(contentsOfURL:) 因为它会阻塞你的 UI,所以最好使用 NSURLSession像这样。

let session = NSURLSession.sharedSession()
let url = NSURL(string: "https://jsonblob.com/api/jsonBlob/580d0ccce4b0bcac9f837fbe")!
var task = session.dataTaskWithURL(url, completionHandler: {
(data, response, error) -> Void in
if error != nil {
return
}

if let jsonResult = try? NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? [Dictionary<String, AnyObject>] {

for anItem in jsonResult {

let mifiName2 = anItem["name"] as! String
let mifiId = anItem["employeeId"] as! Int

let newName = Name(mifiName: mifiName2, mifiId: mifiId)
nameOfMifi.append(newName)
//print("Name: \(newName)")
}
//Now you need to sort your array on the basis of name like this
nameOfMifi.sortInPlace { $0.mifiName < $1.mifiName }

//Now reload tableView on main thread.
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
}
})
task.resume()

关于ios - swift:从 JSON 解析的 Alphabetiz 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40734159/

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