¿Ordenar rápidamente la matriz por clave de negocio?
-
05-07-2019 - |
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.
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.