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

时间:2011-03-31 08:22:48

标签: objective-c arrays sorting

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

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

谢谢,

1 个答案:

答案 0 :(得分: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;
}];

Collections Programming Topics文档中对排序数组进行了详尽的讨论,并附有示例。