Tengo dificultades para tratar de ordenar una variedad de diccionarios.¿La mejor manera de ordenar un NSArray de objetos NSDictionary?
Mis diccionarios tienen un par de valores de interés, precio, popularidad, etc.
¿Alguna sugerencia?
Tengo dificultades para tratar de ordenar una variedad de diccionarios.¿La mejor manera de ordenar un NSArray de objetos NSDictionary?
Mis diccionarios tienen un par de valores de interés, precio, popularidad, etc.
¿Alguna sugerencia?
Uso NSSortDescriptor
como esto ..
NSSortDescriptor * descriptor = [[NSSortDescriptor alloc] initWithKey:@"interest" ascending:YES];
stories = [stories sortedArrayUsingDescriptors:@[descriptor]];
recent = [stories copy];
stories
es la matriz que desea ordenar. recent
es otra matriz mutable que tiene valores de diccionario ordenados. Cambie el @"interest"
con el valor de clave sobre el que debe ordenar.
Todo lo mejor
Escriba una función de clasificación que compare los campos relevantes en dos diccionarios. Cuando tenga esta versión, puede, por ejemplo, usar NSArray#sortedArrayUsingFunction:context:
para ordenar su matriz.
[array sortUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"YOUR-KEY" ascending:YES], nil]];
Realmente no quiero romperlo en varias líneas. Ya es lo suficientemente simple para mí.
actualización, sortUsingDescriptors está ahora sortedArrayUsingDescriptors
Por lo tanto, es como:
items = [items sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
Parece ser confuso: '[NSArray sortedArrayUsingDescriptors] 'y -' [NSMutableArray sortUsingDescriptors] '. La última todavía existe y no ha sido reemplazada. – Dalzhim
Usted puede simplemente travesía de los padres al niño la propiedad requerida. Por ej.
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"parent.child.child" ascending:YES];
array = [array sortedArrayUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"YOUR-KEY" ascending:YES], nil]];
Recuerde asignar a la matriz
1 Esto es, con mucho, el método más simple –
Muchas gracias, tiene sentido y funciona – iOSDevil
Esto es bueno, pero se escapa. 1) el descriptor de clasificación debe ser liberado o liberado automáticamente, y 2) la llamada de copia no es necesaria, la línea puede ser eliminada. –