NSMutableArray сортирует пользовательский объект с помощью селектора

#iphone #sorting #ios4 #nsmutablearray

#iPhone #сортировка #ios4 #nsmutablearray

Вопрос:

 @interface PlayerVO : NSObject {
NSString *name;
int duration;
}

@property (nonatomic, retain) NSString *name;
@property (readwrite) int duration;

@end
  

пользовательский объект, подлежащий сортировке на основе значения длительности (по возрастанию)

в другом классе я создал функцию,

 - (NSComparisonResult)sort:(PlayerVO *)otherObject {
if ([self duration] < [otherObject duration]) {
    return NSOrderedAscending;
} else if([self duration] > [otherObject duration]){
    return NSOrderedDescending;
} else {
    return NSOrderedSame;
}
}
  

Вызывающая функция

 [data sortedArrayUsingSelector:@selector(sort:)];
  

Я делаю что-то не так здесь?

Ответ №1:

Когда вы используете sortedArrayUsingSelector: , указанный вами селектор будет отправлен объектам в массиве. Итак, ваш -sort: метод должен быть объявлен и определен в классе объектов, которые вы сортируете, а не в другом классе.