2012-05-07 4 views
2

У меня есть 2D массив как следующее:Сортировка 2D NSMutableArray

NSMutableArray *world=[[NSMutableArray alloc]init]; 
NSNumber *number; 
NSMutableArray *inner; 

int scr=2; 
number=[[NSNumber alloc]initWithInt:scr]; 
inner=[[NSMutableArray alloc]initWithObjects:@"ABC",number,nil]; 
[world addObject:inner]; 

scr=6; 
number=[[NSNumber alloc]initWithInt:scr]; 
inner=[[NSMutableArray alloc]initWithObjects:@"XYZ",number,nil]; 
[world addObject:inner]; 

scr=1; 
number=[[NSNumber alloc]initWithInt:scr]; 
inner=[[NSMutableArray alloc]initWithObjects:@"PQR",number,nil]; 
[world addObject:inner]; 

scr=5; 
number=[[NSNumber alloc]initWithInt:scr]; 
inner=[[NSMutableArray alloc]initWithObjects:@"DEF",number,nil]; 
[world addObject:inner]; 

scr=3; 
number=[[NSNumber alloc]initWithInt:scr]; 
inner=[[NSMutableArray alloc]initWithObjects:@"LMN",number,nil]; 
[world addObject:inner]; 

Теперь я хочу, чтобы упорядочить мировой массив иметь следующий результат,

XYZ 6 
DEF 5 
LMN 3 
ABC 2 
PQR 1 

может кто-нибудь, пожалуйста, помогите мне, Спасибо заранее ...

+0

Я использую этот NSSortDescriptor * SortOrder = [NSSortDescriptor sortDescriptorWithKey: @ "номер" восходящая: NO]; [world sortUsingDescriptors: [NSArray arrayWithObject: sortOrder]]; – Anand

+0

Вы пытаетесь использовать NSSortdescriptor? – vishiphone

+0

Я пробовал, и он дает мне эту ошибку :::: 'NSUnknownKeyException', reason: '[<__ NSCFConstantString 0x45c4> valueForUndefinedKey:]: этот класс не является ключевым значением, совместимым с кодировкой для номера ключа.' – Anand

ответ

5

Вы можете использовать sortedArrayUsingComparator:, чтобы отсортировать массив по индивидуальному коду сортировки. Наличие попробовать с этим:

NSArray *sortedWorld = [world sortedArrayUsingComparator:^(id a, id b) { 
    NSNumber *numA = [a objectAtIndex:1]; 
    NSNumber *numB = [b objectAtIndex:1]; 
    return [numB compare:numA]; 
}]; 
+0

Спасибо большое, спасибо большое. – Anand

Смежные вопросы