sortedArrayWithSelector и NSDictionnary для iOS - PullRequest
0 голосов
/ 05 июля 2011

У меня есть массив 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 Ответ

2 голосов
/ 05 июля 2011

Документация для 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]];
...