Cargando NSDictionary de Plist como listdo

Estoy usando plist para almacenar lists de valores key . Cuando la aplicación necesita esa list, probar la list de carga a un NSDictionary . Todo está bien hasta aquí.

Aquí, cómo cargo el file Plist:

 NSString *myPlistFilePath = [[NSBundle mainBundle] pathForResource: @"cities" ofType: @"plist"]; cities = [NSDictionary dictionaryWithContentsOfFile: myPlistFilePath]; 

Cuando miramos, las cities son un NSDictionary . Luego presioné todos los valores key de la list a un TableView, de alguna manera no aparece como en el file Plist. Ordenando random

¿Hay forma de averiguarlo? Gracias por adelantado.

Un NSDictionary no es una colección orderada, es decir, no garantiza preservar el order de los contenidos de ninguna manera. Su única function es mapear de keys a valores.

Si necesita los contenidos orderados, puede extraerlo del NSDictionary utilizando, por ejemplo, keysSortedByValueUsingSelector , que extraerá los datos de la colección, los clasificará según sus criterios y los almacenará en un NSArray (order de conservación).

Alternativamente, considere usar una matriz en la raíz del plist, que contenga una list orderada de dictionarys de la ciudad. Entonces, si itera sobre la matriz que contiene, estarán en el order de la matriz contenido en el plist.

NSDictionary no es una estructura de datos orderada.

Los objects se enumeran según las funciones de allKeys y las keys se enumeran de forma indefinida.

Consulte la function apple doc para la function allKeys .

allKeys Devuelve una nueva matriz que contiene las keys del dictionary.

  • (NSArray *) allKeys

Valor de retorno Una nueva matriz que contiene las keys del dictionary, o una matriz vacía si el dictionary no tiene inputs.

Discusión El order de los elementos en la matriz no está definido.

Si desea evitar el uso de un selector para orderar las keys, considere usar una matriz en la raíz del plist. Luego, cuando se itera sobre la matriz, se conserva el order. Esto ejecuta o (n), que es más corto que el algorithm de sorting más rápido posible por un factor de log (n)
p.ej:

 cities{ list[ city{} city{} city{} ... ] }