Ios 在Swift中对NSDictionary对象的NSArray进行排序

Ios 在Swift中对NSDictionary对象的NSArray进行排序,ios,arrays,sorting,dictionary,swift,Ios,Arrays,Sorting,Dictionary,Swift,我从API中检索了一些JSON数据,现在有了一个NSArray,其中充满了NSDictionary对象。每个NSDictionary都有一个“name”键/值对,我想按该键/值对NSArray进行排序 我已经做了很多搜索,但我遇到的解决方案似乎没有一个在新的Swift语言中工作,我不确定它是否可能是一个bug 我试过: var descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true) var sor

我从API中检索了一些JSON数据,现在有了一个NSArray,其中充满了NSDictionary对象。每个NSDictionary都有一个“name”键/值对,我想按该键/值对NSArray进行排序

我已经做了很多搜索,但我遇到的解决方案似乎没有一个在新的Swift语言中工作,我不确定它是否可能是一个bug

我试过:

var descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true)
var sortedResults: NSArray = results.sortedArrayUsingDescriptors(NSSortDescriptor(key: "name", ascending: true))
但这不会编译为“NSSortDescriptor不能转换为[AnyObject]”


有什么建议吗?

您必须传递排序描述符数组(即使只有一个):


与其用老办法做这件事,为什么不拥抱新的呢?swift数组类型具有
排序
排序
方法。您可以提供一个闭包作为排序函数:

var sortedResults= results.sorted {
  (dictOne, dictTwo) -> Bool in 
  // put your comparison logic here
  return dictOne["name"]! > dictTwo["name"]!
}

阅读错误说明:它需要一个数组……或者,这可以在一行上完成:
var sortedResults=results.sorted{$0[“name”!>$1[“name”!}
确实可以,但我猜OP对Swift来说有点陌生,所以我选择了更详细的闭包语法!我对斯威夫特确实是个新手,我之前也试过,但没能成功。我想我知道我错过了什么,稍后会给你一个答案。非常感谢。我相信这会奏效,但我在从NSArray到阵列的桥接上遇到了各种各样的麻烦。。。不过,Kambala下面的回答很有效,因此我可以继续使用NSArray。您如何对多个排序描述符执行相同的操作?使用xcode 6.1这会给我一个“无法转换表达式的类型”$T7??输入'NSSortDescriptor',因为我像这样定义了NSArray var valores=NSMutableArray(contentsOfFile:file)有什么建议吗?任何帮助都是非常好的!这是唯一一个在搜索2天后仍能正常工作的示例!非常感谢。如果您在Objective-C->NSArray*数组中有此项=[[dictionary allKeys]SorterDarrayUsingSelector:@selector(compare:)];有人知道斯威夫特的替代方案吗?
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)