在Swift中对NSDictionary对象的NSArray进行sorting
我已经从API中获取了一些JSON数据,现在有一个NSArray充满了NSDictionary对象。 每个NSDictionary都有一个“name”的键/值对,我想通过该键/值对对NSArray进行sorting。
我已经做了相当多的search,但没有我遇到的解决scheme似乎在新的Swift语言工作,我不知道是否可能是一个错误或不…
我试过了:
var descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true) var sortedResults: NSArray = results.sortedArrayUsingDescriptors(NSSortDescriptor(key: "name", ascending: true))
但是,这不会编译指出“NSSortDescriptor不能转换为[AnyObject]”。
有什么build议?
你必须传递一个sorting描述符数组(即使它只有一个):
var descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true) var sortedResults: NSArray = results.sortedArrayUsingDescriptors([descriptor])
而不是以旧的方式做,为什么不接受新的? swift数组types同时具有sort
和sorted
方法。 您可以提供一个闭包作为sortingfunction:
var sortedResults= results.sorted { (dictOne, dictTwo) -> Bool in // put your comparison logic here return dictOne["name"]! > dictTwo["name"]! }
var arrDescriptor = NSSortDescriptor(key: "", ascending: true) var sortDescriptors: NSArray = [arrDescriptor] _sortedArray = allKeysArray.sortedArrayUsingDescriptors(sortDescriptors as [AnyObject]) print(_sortedArray)