我有一个NSDictionaries
的NSArray
,其中我从NSDictionary
中的一个元素创建了NSStrings
的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元素。
要与第一种情况下的localizedCaseInsensitiveCompare进行比较,请使用
NSSortDescriptor * descriptor = [[NSSortDescriptor alloc] initWithKey:@"NAME"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)];