如何使用不同的排序函数对NSArray排序



我有一个NSDictionariesNSArray,其中我从NSDictionary中的一个元素创建了NSStringsNSArray

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

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元素。

要与第一种情况下的localizedCaseInsensitiveCompare进行比较,请使用

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

最新更新