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

Как сортировать NSArray объектов на основе одного атрибута

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

4b9b3361

Ответ 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];`