我有一个NSArray
NSDictionaries
,我在其NSArray
中的一个元素中创建NSStrings
NSDictionary
。
然后我试图对两者进行排序,但我得到的结果略有不同。
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
词典..但我不知道如何做到这一点,因为你必须访问里面每个NSDictionary
的NAME元素第一个NSArray
。
非常感谢任何帮助。
答案 0 :(得分:2)
要在第一种情况下与localizedCaseInsensitiveCompare进行比较,请使用
NSSortDescriptor * descriptor = [[NSSortDescriptor alloc] initWithKey:@"NAME"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)];