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]];