Как отсортировать NSArray объектов на основе одного атрибута - PullRequest
30 голосов
/ 06 июня 2011

Я пытаюсь отсортировать массив управляемых объектов по алфавиту.Атрибут, по которому они должны быть отсортированы, является именем объекта (NSString) с одним из управляемых атрибутов.В настоящее время я помещаю все имена в массив строк и затем использую sortedNameArray = [sortedNameArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];, а затем перечисляю их обратно в массив с объектами.Это разваливается, когда два имени совпадают, поэтому мне действительно нужно иметь возможность сортировать по одному атрибуту.Как мне это сделать?

Ответы [ 2 ]

83 голосов
/ 06 июня 2011

Использовать NSSortDescriptor.Просто найдите документацию по ней, и там есть несколько очень простых примеров, которые вы можете скопировать прямо сейчас.Вот упрощенный пример:

NSSortDescriptor *valueDescriptor = [[NSSortDescriptor alloc] initWithKey:@"MyStringVariableName" ascending:YES];
NSArray *descriptors = [NSArray arrayWithObject:valueDescriptor]; 
NSArray *sortedArray = [myArray sortedArrayUsingDescriptors:descriptors]; 

И точно так же у вас есть отсортированный массив.

0 голосов
/ 01 мая 2015

Вы можете сделать это с помощью NSSortDescriptor,

например.

`NSSortDescriptor *valueDescriptor = [[NSSortDescriptor alloc]initWithKey:@"distance" ascending:YES];`

// Здесь я сортирую по имени расстояния.Вы должны написать свой собственный ключ.

NSArray * descriptors = [NSArray arrayWithObject:valueDescriptor];
NSArray *sortedArray=[yourArray sortedArrayUsingDescriptors:descriptors];`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...