繁体   English   中英

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

[英]Sort NSArray of NSDictionary objects in Swift

我从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]”。

有什么建议?

你必须传递一系列排序描述符(即使它只是一个):

var descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true)
var sortedResults: NSArray = results.sortedArrayUsingDescriptors([descriptor])

而不是以旧的方式做到这一点,为什么不拥抱新的? swift Array类型具有sortsorted方法。 您可以提供闭包作为sort函数:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM