Domanda

Ho una serie di oggetti, la cui dimensione non posso prevedere. I contenuti dell'array sono oggetti modello con proprietà di tipo nsstring e nsnumber.

Devo ordinare l'array in base a una delle proprietà, un nsnumber. Come lo faresti in obiettivo-c / cacao? Implementare quicksort o qualche altro algoritmo (quale)? Qualche libreria che lo gestisce per te?

Aggiorna Mentre la risposta di seguito è corretta, funziona solo su 10.6 e sto puntando su 10.5.

È stato utile?

Soluzione 2

Questo è quello che mi è venuto in mente:

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

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

Altri suggerimenti

NSArray ha diversi metodi di ordinamento. Dato il tuo array, arr ,

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

ti darà un array ordinato (crescente) per @ "quotProperty". Ovviamente, dovrai sostituire il nome della proprietà NSNumber negli oggetti del tuo modello con @ " numberProperty " .

L'algoritmo di ordinamento non è specificato nei metodi di ordinamento di NSArray .

Usa qsort () da stdlib.h.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top