Сортировка массива объектов Objective-c - PullRequest
8 голосов
/ 06 мая 2010

Итак, у меня есть пользовательский класс Foo, который имеет несколько членов:

@interface Foo : NSObject {
    NSString *title;
    BOOL     taken;
    NSDate   *dateCreated;
}

А в другом классе у меня есть NSMutableArray, содержащий список этих объектов. Я бы очень хотел отсортировать этот массив на основе свойства dateCreated; Я понимаю, что мог бы написать свой собственный сортировщик для этого (итерация массива и перестановка на основе даты), но мне было интересно, существует ли правильный Objective-C способ достижения этого?

Какой-то механизм сортировки, где я могу предоставить переменную-член для сортировки, был бы великолепен.

В C ++ я использовал перегрузку операторов <=>, и это позволило мне сортировать по объектам, но у меня странное чувство, что Objective-C может предложить более хорошую альтернативу?

Большое спасибо

1 Ответ

15 голосов
/ 06 мая 2010

Это довольно просто сделать.

Сначала в вашем объекте Foo создайте метод

- (NSComparisonResult) compareWithAnotherFoo:(Foo*) anotherFoo;

Который вернется

[[self dateCreated] compare:[anotherFoo dateCreated]];

В конце вызовите массив

[yourArray sortUsingSelector:@selector(compareWithAnotherFoo:)];

Надеюсь, это поможет, Пол

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