如何对NSMutableDurray的NSMutableArray进行排序?

时间:2013-11-04 20:03:53

标签: objective-c nsmutablearray nsarray nsdictionary

这是我的代码:

NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"contact_name" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName];    
arrayOfDictionary = [arrayOfDictionary sortedArrayUsingDescriptors:sortDescriptors];

显然这不起作用,因为arrayOfDictionaryNSMutableArray。我已经环顾了很多,我用字典数组看到的所有排序都是用非可变数组完成的。任何人都可以通过NSMutableArray了解我如何做到这一点。

3 个答案:

答案 0 :(得分:0)

arrayOfDictionary = [arrayOfDictionary sortedArrayUsingDescriptors:sortDescriptors] mutableCopy];

虽然不是最好的方法,但却能得到你想要的东西......

答案 1 :(得分:0)

如果要对Mutable数组进行排序,可以使用sortUsingDescriptors

答案 2 :(得分:0)

如果您的词典数组包含键contact_name,那么您的代码几乎可以正常工作。请注意下面的简化需要更少的代码。

请注意,您可以使用sortedArrayUsingDescriptors从可变或不可变数组创建新数组。您还可以使用sortUsingDescriptors对可变数组进行排序。

因此:

NSArray *newArray = [arrayOfDictionary sortedArrayUsingDescriptors:
   @[[NSSortDescriptor sortDescriptorWithKey:@"contact_name" ascending:YES]]];

// if you need it mutable:
NSMutableArray *mutableArrayOfDictionary = [NSMutableArray arrayWithArray:newArray];

[mutableArrayOfDictionary sortUsingDescriptors:
   @[[NSSortDescriptor sortDescriptorWithKey:@"contact_name" ascending:YES]]];