Obtenga la matriz de valores, ordene esa matriz y luego obtenga la clave correspondiente al valor.
Puede obtener los valores con:
NSArray* values = [myDict allValues];
NSArray* sortedValues = [values sortedArrayUsingSelector:@selector(comparator)];
Pero, si la colección es como usted muestra en su ejemplo, (quiero decir, se puede deducir el valor de la clave), siempre se puede ordenar la en cambio, las teclas están jugando con los valores.
usando:
NSArray* sortedKeys = [myDict keysSortedByValueUsingSelector:@selector(comparator)];
El comparador es un selector de mensajes que se envía al objeto que desea ordenar.
Si desea pedir cadenas, debe usar un comparador NSString. Los comparadores NSString son, por ejemplo: caseInsensitiveCompare o localizedCaseInsensitiveCompare :.
Si ninguno de estos son válidos para usted, usted puede llamar a su propia función comparador
[values sortedArrayUsingFunction:comparatorFunction context:nil]
Ser comparatorFunction (de AppleDocumentation)
NSInteger intSort(id num1, id num2, void *context)
{
int v1 = [num1 intValue];
int v2 = [num2 intValue];
if (v1 < v2)
return NSOrderedAscending;
else if (v1 > v2)
return NSOrderedDescending;
else
return NSOrderedSame;
}
bien, así que vamos a decir que desea utilizar su segundo método. ¿Qué es exactamente "comparador"? Lo siento, nunca antes había usado este método. ¿Eso significa que necesito escribir mi propia función? ¿Cómo se vería? ¡¡Gracias!! – CodeGuy
Edité la respuesta, espero que ya esté suficientemente claro – HyLian
@HyLian ¿Qué pasa si NSDictionary contiene valores duplicados para claves diferentes? ¿Cómo rastreará qué clave debería recogerse? –