2013-05-01 79 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:)];