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