sortedArrayWithSelector и NSDictionnary для iOS

У меня есть массив NSDictionnary, и я хотел бы отсортировать их по значению int (ключ называется "age"). Например:

Dic1: возраст = 30, пол = мужчина; Dic2: возраст = 24 года, пол = мужчина;

Массив: Dic1, Dic2;

Теперь с методом сравнения я хотел бы иметь:

Массив: Dic2, Dic1;

Я перепробовал много вещей, но не работает. Я использую NSSortDescriptor, но он доступен только с iOS 4.0:(

У вас есть решение? Спасибо!

РЕДАКТИРОВАТЬ:

Я написал метод сравнения в категории NSDictionary:

- (NSComparisonResult)compareGood:(NSDictionary *)otherObject 
{
    return [[self objectForKey:@"age"] compare:[otherObject objectForKey:@"age"]];
}

Но у меня есть эта ошибка сбоя: завершение приложения из-за необработанного исключения "NSInvalidArgumentException", причина: "* - [NSCFNumber сравнить:]: ноль аргумент"

1 ответ

Решение

Документация для NSSortDescriptor гласит:

Доступный в iOS 2.0 и позже.

Аналогично для метода NSMutableArray -sortUsingDescriptors:, Вы должны быть в состоянии сделать это:

NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"age" 
                                                          ascending:YES]
                                                          autorelease];
[myArray sortUsingDescriptors:[NSArray arrayWithObject:descriptor];

или, если myArray не является изменяемым, сделайте это для второй строки:

NSArray *sortedArray = [myArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]];
Другие вопросы по тегам