Цель C - Сортировать массив строк - PullRequest
19 голосов
/ 28 апреля 2011

Я должен отсортировать массив объектов по свойству объектов, которое является строкой.Как я могу это сделать?

Ответы [ 3 ]

37 голосов
/ 28 апреля 2011

вам нужно использовать

-[NSArray sortedArrayUsingSelector:]

или

-[NSMutableArray sortUsingSelector:] и передать @selector(compare:) в качестве параметра.

вот ссылка на ответ Сортировать NSArray из строк или объектов даты

9 голосов
/ 11 мая 2015

Для простой сортировки массива строк:

sorted = [array sortedArrayUsingSelector:@selector(compare:)];

Для сортировки объектов с ключом «имя»:

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(compare:)];
sorted = [array sortedArrayUsingDescriptors:@[sort]];

Также вместо compare: можно использовать:

  • caseInsensitiveCompare:

  • localizedCaseInsensitiveCompare:

4 голосов
/ 16 сентября 2014

Вот что я в итоге использовал;работает как шарм:

[categoryArray sortedArrayWithOptions:0
               usingComparator:^NSComparisonResult(id obj1, id obj2)
{
    id<SelectableCategory> cat1 = obj1;
    id<SelectableCategory> cat2 = obj2;
    return [cat1.name compare:cat2.name options:NSCaseInsensitiveSearch];
}];

SelectableCategory - это просто @protocol SelectableCategory <NSObject>, определяющий категорию со всеми ее свойствами и элементами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...