Как мне отсортировать NSMutableArray? - PullRequest
0 голосов
/ 29 июля 2011

У меня есть следующие 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 голосов
/ 29 июля 2011

См. Документацию для -sortedArrayUsing... методов. Возможно, вы захотите реализовать свой собственный блок компаратора.

0 голосов
/ 29 июля 2011

Я бы поступил по-другому. Я бы определил один класс, который содержит три строки и целое число, и поместил бы экземпляры этого класса в один массив. Когда вы сортируете массив, вы сортируете по целому числу, а остальные автоматически перемещаются вместе с ним.

@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: для сортировки массива. В блоке вы сравниваете целочисленные свойства элементов.

0 голосов
/ 29 июля 2011

Я думаю, что вы просите отсортировать несколько массивов в один и тот же относительный порядок, что и управляющий массив?В каком случае, если вы можете отсортировать один массив, просто примените те же преобразования к другим массивам, как и к первому?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...