ios - iOS 上的 sortedArrayWithSelector 和 NSDictionnary

标签 ios sorting compare nsdictionary

我有一个 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 argument”

最佳答案

NSSortDescriptor 的文档说:

Available in iOS 2.0 and later.

同样适用于 NSMutableArray 方法 -sortUsingDescriptors:。你应该能够做到这一点:

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

或者,如果 myArray 不可变,则对第二行执行此操作:

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

关于ios - iOS 上的 sortedArrayWithSelector 和 NSDictionnary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6584310/

相关文章:

r - 比较两个数据框并创建一个报告,在存在差异的地方给出字段名和旧/新值

c - strcmp() 认为字符串不相等……但它们是相等的吗?

ios - ld : SDK. 使用旧版本的 Swift 语言 (XX) 编译的框架比以前的 ObjC 框架文件(未知 ABI 版本 YYY)

ios - 如何计算我当前位置与 MapView 中其他 Pin 之间的距离

linux - 使用列条件在 uniq 之后打印行

javascript - 比较JS中的日期和时间

ios rectOfInterest AVCaptureMetadataOutput 忽略

iOS Swift 如何以编程方式重置/撤销应用程序权限?

Ruby,如何将一个数组改组为另一个数组

c++ - 数组中的错误功能排序