如何对NSMutableArray进行排序?

时间:2011-07-29 06:53:38

标签: objective-c sorting

我有以下NSMutableArrays:

NSMutableArray *array1 = [[NSMutableArray alloc]initWithObjects:@"AAA",@"BBB",@"CCC",nil];
NSMutableArray *array2 = [[NSMutableArray alloc]initWithObjects:@"BBB",@"AAA",@"CCC",nil];
NSMutableArray *array3 = [[NSMutableArray alloc]initWithObjects:@"CCC",@"BBB",@"AAA",nil];

NSMutableArray *number = [[NSMutableArray alloc]initWithCapacity:3]; <- use sorting key.

NSNumber *number1 = [[NSNumber alloc]initWithInt:30];
NSNumber *number2 = [[NSNumber alloc]initWithInt:20];
NSNumber *number3 = [[NSNumber alloc]initWithInt:10];
[number addObject:number1];
[number addObject:number2];
[number addObject:number3];

但我想得到这个结果:

// get results to sorted by number key

// number result :    10,   20,   30
// array1 result :   CCC,  BBB,  AAA
// array2 result :   CCC,  AAA,  BBB
// array3 result :   AAA,  BBB,  CCC

我将如何做到这一点?

3 个答案:

答案 0 :(得分:0)

我认为您要求的是将多个数组排序为与控制数组相同的相对顺序? 在这种情况下,如果您可以对一个数组进行排序,只需在对第一个数组进行排序时将相同的变换应用于其他数组?

答案 1 :(得分:0)

请参阅-sortedArrayUsing...方法的文档。你可能想要实现自己的比较器块。

答案 2 :(得分:0)

我会以不同的方式解决这个问题。我将定义一个包含三个字符串和一个整数的类,并将该类的实例放在一个数组中。对数组进行排序时,将对整数进行排序,其余的将自动与其一起移动。

@interface QuadrupleItems : NSObject
{
    NSString *first;
    NSString *second;
    NSString *third;
    NSInteger integer;
}
// ... methods you might need, e.g. initWithFirst:second:third:integer: etc...
@property (retain) NSString *first;
// etc...

现在,排序很简单,我想您已经知道可以使用sortedArrayUsing:对数组进行排序。在块中,比较项的整数属性。