【发布时间】:2011-01-28 03:28:58
【问题描述】:
我有一个包含字典的数组;那么如何根据字典键值对数组进行排序呢?
【问题讨论】:
-
这个问题出现在 Stackoverflow stackoverflow.com/questions/4767219/…
标签: objective-c nsmutablearray nsmutabledictionary
我有一个包含字典的数组;那么如何根据字典键值对数组进行排序呢?
【问题讨论】:
标签: objective-c nsmutablearray nsmutabledictionary
如果数组中的每个元素都是包含某个键的字典,则可以使用排序描述符对数组进行排序。例如,如果每个元素都是一个字典,其中包含一个名为“name”的键:
NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name"
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName];
NSArray *sortedArray = [array sortedArrayUsingDescriptors:sortDescriptors];
【讨论】:
实现此目的的另一种方法是使用sortedArrayUsingComparator: 方法
NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [[obj1 valueForKey:@"value"] compare:[obj2 valueForKey:@"value"]];
}];
【讨论】:
【讨论】:
Bavarious 的上述共享答案对我有帮助。只想再添加一件事。如果要对可变数组进行排序,请使用以下代码
NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName];
NSMutableArray *sortedArray = [[NSMutableArray sortedArrayUsingDescriptors:sortDescriptors]mutableCopy];
【讨论】:
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)
【讨论】: