Obj/C:对自定义订单排序数组

Joe*_*jah 5 arrays sorting objective-c

我有一系列NSMutableDictionaries,包含(其中包括)关键位置.我需要对数组进行排序以将其输入到表中.顶部应该是N,下面应该是A,而下面应该是R.所以在sort中:我如何按顺序排序数组:N - A - R?

编辑:我可以通过查看两个变量来订购,但我使用了超过2个变量(总共7个)...

谢谢,

Cal*_*leb 6

如果您的数组是可变的,则可以使用-sortUsing ...方法对其进行排序.如果没有,您可以使用-sortedArrayUsing ...方法创建一个新的排序数组.例如,有-sortUsingComparator:和-sortedArrayUsingComparator:将比较器块作为参数的方法.您只需提供一个使用自定义排序顺序比较两个对象的块,如下所示:

[myArray sortUsingComparator:^(id firstObject, id secondObject) {
    NSString *firstKey = [firstObject valueForKey:@"location"];
    NSString *secondKey = [secondObject valueForKey:@"location"];
    if ([firstKey stringEqual:@"N"] || [lastKey stringEqual:@"R"])
        return NSOrderedAscending;
    else if ([firstKey stringEqual:secondKey])
        return NSOrderedSame;
    else
        return NSOrderedDescending;
}];
Run Code Online (Sandbox Code Playgroud)

集合编程主题文档中有一个关于排序数组的详尽讨论,并附有示例.