programming framework español development app iphone cocoa-touch uikit nsdictionary

iphone - framework - ¿Están ordenadas las claves y los valores en un NSDictionary?



swift ios documentation (6)

Quiero decir: ¿el orden de las claves y los valores en un NSDictionary son siempre los mismos que en el momento de inicializar el NSDictionary? ¿O debería mantener un NSArray separado si realmente necesito saber el orden de las claves?


NSDictionary, según la referencia de Apple , es básicamente una envoltura alrededor de una tabla hash. Entonces no, no se garantiza que estén en un orden particular.


No, no están ordenados Siempre que no agregue ni elimine ningún elemento del diccionario, permanecerá en el mismo orden, pero tan pronto como agregue o elimine un elemento, el nuevo orden será completamente diferente.

Si necesita que se ordenen las claves / valores, use un NSArray (u otra estructura de datos ordenada) en su lugar.


nunca se garantiza que las claves estén en el mismo orden cuando se accede a un NSDictionary. Si se pueden comparar las claves (que supongo que se les puede dar su pregunta), entonces siempre puede ordenarlas si necesita acceder a ellas en orden ordenado.

Debería hacer esto leyendo las claves en una matriz primero y ordenando la matriz por supuesto.


NSDiccionario claves y valores no están ordenados. Sus opciones:

  • Mantenga una matriz separada de las teclas en el orden que desee
  • Escribe o encuentra una clase existente que sea un contenedor para lo anterior
  • Escriba o encuentre una subclase existente de NSDictionary que agregue API para ordenar


De hecho, ni siquiera puede confiar en que el orden sea el mismo cuando se ejecuta el programa en dos dispositivos diferentes, incluso si es exactamente el mismo programa y la misma versión exacta del sistema operativo.

Por ejemplo, si ejecuta el programa en un iPad Air, el orden de los elementos dentro de NSDictionary puede ser diferente que cuando se ejecuta el mismo programa en un iPad Retina, incluso si la versión de iOS es exactamente la misma.

En resumen, nunca debe confiarse en el orden de los elementos en NSDictionary. Siempre debe suponer que pueden estar en cualquier orden no especificado, que puede ser diferente en diferentes dispositivos.