2013-05-01 2 views
0

У меня есть NSArray из NSDictionaries, в котором я создаю NSArray из NSStrings из одного из элементов в NSDictionary.Как отсортировать NSArray с использованием различных функций сортировки

Я пытаюсь сортировать оба, но я получаю немного разные результаты от обоих видов.

NSDictionary в простой

NAME 
Number 

Я первый NSArray и создание нового NSArray с помощью NAME элемент словаря.

Я тогда сортировки первый массив как этот

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 внутри первого NSArray.

Любая помощь была бы принята с благодарностью.

ответ

2

Для сравнения с localizedCaseInsensitiveCompare в первом случае используйте

NSSortDescriptor * descriptor = [[NSSortDescriptor alloc] initWithKey:@"NAME" 
    ascending:YES 
    selector:@selector(localizedCaseInsensitiveCompare:)]; 
Смежные вопросы