2011-07-29 88 views
0

我有以下NSMutableArrays:如何对NSMutableArray进行排序?

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 

我怎么会去这样做呢?

回答

0

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

0

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

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:到数组排序。在该块中,您可以比较项目的整数属性。

相关问题