【问题标题】:How to sort an array which contains Dictionaries?如何对包含字典的数组进行排序?
【发布时间】:2011-01-28 03:28:58
【问题描述】:

我有一个包含字典的数组;那么如何根据字典键值对数组进行排序呢?

【问题讨论】:

标签: objective-c nsmutablearray nsmutabledictionary


【解决方案1】:

如果数组中的每个元素都是包含某个键的字典,则可以使用排序描述符对数组进行排序。例如,如果每个元素都是一个字典,其中包含一个名为“name”的键:

NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name"
    ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName];
NSArray *sortedArray = [array sortedArrayUsingDescriptors:sortDescriptors];

【讨论】:

  • int值如何排序?
【解决方案2】:

实现此目的的另一种方法是使用sortedArrayUsingComparator: 方法

NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    return [[obj1 valueForKey:@"value"] compare:[obj2 valueForKey:@"value"]];
}];

【讨论】:

    【解决方案3】:

    为什么不使用排序字典,其中排序元素的属性已经随数据结构提供?

    请查看here

    希望这会有所帮助。

    【讨论】:

      【解决方案4】:

      Bavarious 的上述共享答案对我有帮助。只想再添加一件事。如果要对可变数组进行排序,请使用以下代码

      NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
      NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName];
      NSMutableArray *sortedArray = [[NSMutableArray sortedArrayUsingDescriptors:sortDescriptors]mutableCopy];
      

      【讨论】:

        【解决方案5】:
         let arrDescriptor = NSSortDescriptor(key: "order", ascending: true)
         let sortDescriptors: NSArray = [arrDescriptor]
         let sortedArray = instancesubArray.sortedArray(using: sortDescriptors as [AnyObject] as [AnyObject] as! [NSSortDescriptor])
        
         print(sortedArray)
        

        【讨论】:

        • 请使用edit链接来解释这段代码是如何工作的,不要只给出代码,因为解释更有可能帮助未来的读者。另请参阅How to Answer
        猜你喜欢
        • 2020-01-18
        • 1970-01-01
        • 2015-12-18
        • 2019-10-27
        • 2012-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多