如何对包含字典的数组进行排序?

时间:2011-01-28 03:28:58

标签: objective-c nsmutablearray nsmutabledictionary

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

5 个答案:

答案 0 :(得分:85)

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

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

答案 1 :(得分:10)

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

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

答案 2 :(得分:1)

为什么不使用已排序元素的属性已经包含数据结构的排序字典?

请查看here

希望这有帮助。

答案 3 :(得分:0)

Bavarious的上述共享答案帮助了我。只想添加一个东西。如果你想对一个可变数组进行排序,请使用类似下面的代码

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

答案 4 :(得分:-3)

 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)