在iOS上使用选择器和词典进行分类

在iOS上使用选择器和词典进行分类,ios,sorting,compare,nsdictionary,Ios,Sorting,Compare,Nsdictionary,我有一个NSDictionnary数组,我想按int值对它们进行排序(键名为“age”)。 例如: Dic1:年龄=30,性别=男性; Dic2:年龄=24岁,性别=男性 阵列:Dic1,Dic2 现在使用比较法,我希望: 阵列:Dic2,Dic1 我试了很多东西,但都不管用。我使用NSSortDescriptor,但它仅从iOS 4.0开始提供:( 你有解决办法吗? 谢谢 编辑: 我在NSDictionary类别上编写了一个比较方法: - (NSComparisonResult)compare

我有一个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 compare::]:nil参数”

NSSortDescriptor的文档说明:

在iOS 2.0及更高版本中提供

同样,对于NSMutableArray方法
-sortusingDescriptor:
。您应该能够执行以下操作:

NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"age" 
                                                          ascending:YES]
                                                          autorelease];
[myArray sortUsingDescriptors:[NSArray arrayWithObject:descriptor];
或者,如果myArray不可变,请对第二行执行此操作:

NSArray *sortedArray = [myArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]];

sortDescriptorWithKey:ascending:和sortedArrayUsingDescriptor仅在iOS 4.0之后才可用。但是我现在使用的是SortusingDescriptor:和initWithKey:ascending:很好——我已经将示例更新为使用
-initWithKey:ascending: