Pregunta

Tengo una variedad de objetos, cuyo tamaño no puedo predecir. El contenido de la matriz son objetos modelo con propiedades de tipo nsstring y nsnumber.

Necesito ordenar la matriz de acuerdo con una de las propiedades, un nsnumber. ¿Cómo lo harías en object-c / Cocoa? ¿Implementar quicksort o algún otro algoritmo (cuál)? ¿Alguna biblioteca que maneje eso por ti?

Actualizar Si bien la respuesta a continuación es correcta, solo funciona en 10.6 y estoy apuntando a 10.5.

¿Fue útil?

Solución 2

Esto es lo que se me ocurrió:

NSArray *unsortedArray = [results allValues];
NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] 
                    initWithKey:@"ordinalPosition" 
                      ascending:YES] 
                    autorelease];

NSArray *sortedArray = [unsortedArray 
                       sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

Otros consejos

NSArray tiene varios métodos de clasificación. Dado su matriz, arr ,

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"numberProperty" ascending:YES];
NSArray *sortedArr = [arr sortedArrayUsingSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];

le dará una matriz ordenada (ascendente) por @ " numberProperty " ;. Obviamente, tendrás que sustituir el nombre de la propiedad NSNumber en los objetos de tu modelo por @ " numberProperty " .

El algoritmo de clasificación no se especifica en los métodos de clasificación de NSArray .

Utilice qsort () de stdlib.h.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top