Подтвердить что ты не робот

Как отсортировать строки в NSMutableArray в алфавитном порядке?

У меня есть список строк в NSMutableArray, и я хочу отсортировать их в алфавитном порядке, прежде чем отображать их в моем представлении таблицы.

Как я могу это сделать?

4b9b3361

Ответ 1

Ниже приведен пример работы Apple с помощью sortedArrayUsingSelector: и localizedCaseInsensitiveCompare: в Документация по коллекциям:

sortedArray = [anArray sortedArrayUsingSelector:
                       @selector(localizedCaseInsensitiveCompare:)];

Обратите внимание, что это вернет новый отсортированный массив. Если вы хотите отсортировать свой NSMutableArray на месте, используйте вместо этого sortUsingSelector::

[mutableArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

Ответ 2

Здесь обновленный ответ для Swift:

  • Сортировка может быть выполнена в Swift с помощью закрытий. Существует два метода - sort и sorted, которые облегчают это.

    var unsortedArray = [ "H", "ello", "Wo", "rl", "d"]
    var sortedArray = unsortedArray.sorted { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending }
    

    Примечание. Здесь sorted возвращает отсортированный массив. Сам unsortedArray не будет сортироваться.

  • Если вы хотите отсортировать unsortedArray самостоятельно, используйте этот

    unsortedArray.sort { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending }
    


Ссылка:
  • Здесь - документация для методов сортировки Swift.

  • Документы для разных методов сравнения String здесь.


Дополнительно

Вместо использования localizedCaseInsensitiveCompare это также можно сделать:

stringArray.sort{ $0.lowercaseString < $1.lowercaseString }

или даже

stringArray.sort{ $0 < $1 }

если вы хотите сравнить с регистром

Ответ 3

Легко получить восходящий порядок. Следуйте нижеуказанным шагам,,

Модель 1:

NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
sortedArray=[yourArray sortedArrayUsingDescriptors:@[sortDesc]];

Если вы хотите, чтобы сортировка была нечувствительной к регистру, вам нужно будет установить дескриптор следующим образом:

Модель 2:

NSSortDescriptor * sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)]; 
sortedArray=[yourArray sortedArrayUsingDescriptors:@[sortDesc]];

Ответ 4

Для меня это сработало....

areas = [areas sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

Здесь области NSArray. Надеюсь, это поможет кому-то.