2013-05-01 46 views
0

我有一个NSArrayNSDictionaries,其中我从NSDictionary中的一个元素创建NSArrayNSStrings如何使用不同的排序功能对NSArray进行排序

然后我尝试对两者进行排序,但是我得到的结果稍有不同。

NSDictionary简单

NAME 
Number 

我是第一个NSArray和使用字典的NAME要素创建一个新的NSArray

我然后排序第一阵列这样

NSSortDescriptor * descriptor = [[NSSortDescriptor alloc] initWithKey:@"NAME" ascending:YES]; // 1 
sortedByNameArray = [dataArrayOfDictionaries sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]]; 

然后我采取第二阵列,而这正是前首先以相同的顺序进行排序,并这样

// sorts nicknames 
newSortedArray = [nameOnlyArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 

排序它虽然这两个数组按字母顺序排序,但localizedCaseInsensitiveCompare:似乎在排序时做得很好,因为我的其他sortedArrayUsingDescriptors:似乎只使用第一个字母进行排序,所以它没有真正排序。

我想申请localizedCaseInsensitiveCompare到词典的NSArray一些帮助..但我不知道如何做到这一点考虑,你必须访问第一个NSArray内的每个NSDictionary的NAME元素。

任何帮助将不胜感激。

回答

2

要与localizedCaseInsensitiveCompare在第一种情况比较,使用

NSSortDescriptor * descriptor = [[NSSortDescriptor alloc] initWithKey:@"NAME" 
    ascending:YES 
    selector:@selector(localizedCaseInsensitiveCompare:)]; 
相关问题