2011-01-18 13 views

Respuesta

88

Esto se puede hacer para ordenar NSMutableArray:

[yourArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 
+0

[tempPeoples sortUsingSelector: @selector (localizedCaseInsensitiveCompare :)]; utilicé este código que da la excepción – Ali

+0

puede publicar la declaración de excepción. –

+0

NAddressBook [5197: 207] *** - [AddressData localizedCaseInsensitiveCompare:]: selector no reconocido enviado a la instancia 0x149160 2011-01-18 17: 01: 14.470 NAddressBook [5197: 207] *** Aplicación de finalización debido a excepción no detectada ' NSInvalidArgumentException ', razón:' *** - [AddressData localizedCaseInsensitiveCompare:]: selector no reconocido enviado a la instancia 0x149160 ' 2011-01-18 17: 01: 14.484 NAddressBook [5197: 207] Pila: ( – Ali

0

Utilice la clase NSSortDescriptor y descansar obtendrá todo lo here

46

Las otras respuestas proveídas aquí mencionar el uso de @selector (localizedCaseInsensitiveCompare :)
Esto funciona muy bien para una matriz de NSString, sin embargo, el OP comentó que la matriz contiene objetos y que la clasificación debe hacerse de acuerdo con la propiedad object.name.
En este caso, usted debe hacer esto:

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; 
[yourArray sortUsingDescriptors:[NSArray arrayWithObject:sort]]; 

Sus objetos se ordenarán de acuerdo con la propiedad del nombre de esos objetos.

+0

¡Exactamente lo que necesitaba! ¡Gracias! – RanLearns

+1

Esta es la mejor respuesta para esta pregunta específica. ¡Funciona genial! –

+0

lo que quiero. +1 – pkc456

1
NSSortDescriptor *valueDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; // Describe the Key value using which you want to sort. 
NSArray * descriptors = [NSArray arrayWithObject:valueDescriptor]; // Add the value of the descriptor to array. 
sortedArrayWithName = [yourDataArray sortedArrayUsingDescriptors:descriptors]; // Now Sort the Array using descriptor. 

Aquí podrá obtener la lista matriz ordenada.

0
NSSortDescriptor * sortDescriptor; 
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Name_your_key_value" ascending:YES]; 
NSArray * sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 
NSArray * sortedArray; 
sortedArray = [Your_array sortedArrayUsingDescriptors:sortDescriptors]; 
0

Tal vez esto le puede ayudar:

[myNSMutableArray sortUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES],[NSSortDescriptor sortDescriptorWithKey:@"lastName" ascending:YES]]]; 

Todo es según NSSortDescriptor ...

Cuestiones relacionadas