0

我有一个NSArrayof ,NSDictionaries在其中我从.NSArrayNSStringsNSDictionary

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

NSDictionary简单

NAME
Number

我是第一个并使用字典的NAME元素NSArray创建一个新的。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一个 NAME 中的每个元素,我不确定如何执行此操作。NSDictionaryNSArray

任何帮助将不胜感激。

4

1 回答 1

2

要与第一种情况下的本地化CaseInsensitiveCompare 进行比较,请使用

NSSortDescriptor * descriptor = [[NSSortDescriptor alloc] initWithKey:@"NAME" 
    ascending:YES 
    selector:@selector(localizedCaseInsensitiveCompare:)];
于 2013-05-01T04:10:31.130 回答