2011-01-28 13 views
27

Tengo una matriz que contiene diccionarios; Entonces, ¿cómo puedo ordenar la matriz de acuerdo a los valores clave del diccionario?¿Cómo ordenar una matriz que contiene diccionarios?

+1

esta pregunta está presente en Stackoverflow http://stackoverflow.com/questions/4767219/how-to-sort-a-nsarray-which-contains-nsdictionary/4767282#4767282 –

Respuesta

79

Si cada elemento de la matriz es un diccionario que contiene una determinada clave, puede ordenar la matriz mediante un descriptor de clasificación. Por ejemplo, si cada elemento es un diccionario que contiene una clave llamada "nombre":

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

cómo ordenar el valor int? –

1

¿por qué no utiliza un diccionario ordenado donde la propiedad de los elementos ordenados ya viene con la estructura de datos?

Por favor, echa un vistazo here

Espero que esto ayude.

0

La respuesta compartida por encima de Bavarious ayudó me.Just quiere añadir una más thing.If desea ordenar un arreglo utilice mutable algo así como el código de abajo

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

la otra forma de lograrlo sería mediante sortedArrayUsingComparator: método

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

Utilice el enlace [editar] para explicar cómo funciona este código y no solo proporcione el código, ya que una explicación es más probable que ayude a los lectores futuros. Ver también [respuesta]. –

Cuestiones relacionadas