Сортировка NSNumber с помощью NSSortDescriptor

У меня есть маршрут в качестве объекта Core Data верхнего уровня. Затем у маршрута есть местоположения. В локациях есть

@property (nonatomic, retain) NSNumber *index;

Мне нужен индекс, потому что мне нужно убедиться, что маршрут пользователя в порядке. Мне было интересно, как я могу лучше всего отсортировать объект Locations. В моем tableView я показываю имя маршрута. Затем, когда пользователь нажимает на маршрут, я показываю местоположения. Я видел, что у NSSet есть

sortedArrayUsingDescriptors

но я не знал, как я могу сортировать NSNumber с помощью sortDescriptor. Я видел, как люди просто используют такой код, как

sortedArrayUsingSelector:@selector(compare:) // or something like that

Я могу написать простой удобный метод для перебора NSSet и возврата объектов Location по их индексу, но не был уверен, что есть лучший способ. Заранее спасибо!


person Crystal    schedule 15.09.2013    source источник


Ответы (3)


Попробуйте использовать это как дескриптор сортировки:

NSSortDescriptor* sort = [NSSortDescriptor sortDescriptorWithKey:@"index" ascending:YES];

Это отсортирует объекты местоположения в порядке возрастания по значению их свойства индекса NSNumber*.

person Patrick Goley    schedule 15.09.2013
comment
Вам не нужен integerValue, дескрипторы сортировки хорошо работают с NSNumber. - person Martin R; 15.09.2013

Вы также можете сделать что-то вроде этого: [set allObjects]sortedArrayUsing... и отсортировать его любым обычным методом сортировки массива, который вы хотите.

person terry lewis    schedule 15.09.2013

Лучший ответ, используйте index, когда-нибудь произойдет сбой. Я не знаю почему, но используйте self правильно.

NSSortDescriptor* sort = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES];
person Jadian    schedule 01.07.2020