2011-01-28 14 views
27

Ho un array che contiene dizionari in esso; quindi, come posso ordinare l'array in base ai valori della chiave del dizionario?Come ordinare un array che contiene dizionari?

+1

questa domanda è presente in Stackoverflow http://stackoverflow.com/questions/4767219/how-to-sort-a-nsarray-which-contains-nsdictionary/4767282#4767282 –

risposta

79

Se ogni elemento dell'array è un dizionario contenente un determinato tasto, è possibile ordinare l'array utilizzando un descrittore di ordinamento. Per esempio, se ogni elemento è un dizionario contenente una chiave chiamata "nome":

NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name" 
    ascending:YES]; 
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName]; 
NSArray *sortedArray = [array sortedArrayUsingDescriptors:sortDescriptors]; 
+0

come ordinare il valore int? –

1

perché non si utilizza un dizionario ordinato in cui la proprietà di elementi ordinati viene già con la struttura dati?

Si prega di controllare fuori here

Spero che questo aiuti.

0

La risposta di cui sopra condivisa da Bavarious aiutato me.Just vuole aggiungere un altro thing.If si desidera ordinare un uso serie mutabile qualcosa come il codice qui sotto

NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; 
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName]; 
NSMutableArray *sortedArray = [[NSMutableArray sortedArrayUsingDescriptors:sortDescriptors]mutableCopy]; 
10

l'altro modo per raggiungere questo sarebbe utilizzando sortedArrayUsingComparator: metodo

NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { 
    return [[obj1 valueForKey:@"value"] compare:[obj2 valueForKey:@"value"]]; 
}]; 
-2
let arrDescriptor = NSSortDescriptor(key: "order", ascending: true) 
let sortDescriptors: NSArray = [arrDescriptor] 
let sortedArray = instancesubArray.sortedArray(using: sortDescriptors as [AnyObject] as [AnyObject] as! [NSSortDescriptor]) 

print(sortedArray) 
+0

Utilizzare il collegamento [modifica] per spiegare come funziona questo codice e non solo fornire il codice, poiché una spiegazione è più probabile che aiuti i futuri lettori. Vedi anche [risposta]. –

Problemi correlati