Я пытаюсь сортировать массив управляемых объектов по алфавиту. Причиной того, что они должны быть отсортированы, является имя объекта (NSString) с одним из управляемых атрибутов. В настоящее время я помещаю все имена в массив строк, а затем используя sortedNameArray = [sortedNameArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
, а затем перечисляя их обратно в массив с объектами. Это разваливается, когда два имени одинаковы, поэтому мне действительно нужно иметь возможность сортировать по одному атрибуту. Как мне это сделать?
Как сортировать NSArray объектов на основе одного атрибута
Ответ 1
Использовать NSSortDescriptor. Просто найдите документацию на нем, и там есть очень простые примеры, которые вы можете скопировать прямо. Вот упрощенный пример:
NSSortDescriptor *valueDescriptor = [[NSSortDescriptor alloc] initWithKey:@"MyStringVariableName" ascending:YES];
NSArray *descriptors = [NSArray arrayWithObject:valueDescriptor];
NSArray *sortedArray = [myArray sortedArrayUsingDescriptors:descriptors];
И точно так же у вас есть отсортированный массив.
Ответ 2
Вы можете сделать это, используя NSSortDescriptor,
например.
`NSSortDescriptor *valueDescriptor = [[NSSortDescriptor alloc]initWithKey:@"distance" ascending:YES];`
//Здесь я сортируюсь от имени расстояния. Вы должны написать свой собственный ключ.
NSArray * descriptors = [NSArray arrayWithObject:valueDescriptor];
NSArray *sortedArray=[yourArray sortedArrayUsingDescriptors:descriptors];`