2008-12-18 19 views
5

Tenía un enfoque directo de convertir los pares clave/valor de un fragmento de XML en un NSDictionary cuando comencé una simple aplicación de iPhone. El problema es que necesito convertir las instancias de NSDictionary que una vez poblaron mis UITableView en clases personalizadas porque requieren un comportamiento y una complejidad adicional. El problema aquí es que ahora, para poder instanciar un objeto y llenar sus variables de instancia con pares clave/valor de un servicio web, se vuelve mucho más difícil. Ya no puedo utilizar un método que itera a través del XML y usa KVC para establecer sus variables de instancia.Codificación de valor-clave

¿Qué tipo de solución existe?

Respuesta

8

Puede seguir utilizando los métodos de codificación del valor clave en su clase personalizada, siempre que nombre las variables de forma adecuada, no hay diferencia. Sin embargo, cuando estoy trabajando con XML, suelo terminar probando cada nombre de nodo o creando una tabla de búsqueda de claves, ya que los nombres en la fuente de datos con los que estoy trabajando no cumplen con la codificación de valores clave. Sin embargo, si tiene control sobre la fuente de datos, puede continuar usando setValue:forKey:.

Recomiendo leer this guide sobre la codificación del valor clave si no lo ha hecho ya. Es fundamental para muchas herramientas geniales en Cocoa.

+0

Eso suena bien, Marc. ¿Alguna posibilidad de que pueda explicar lo que quiere decir con que los nombres en la fuente de datos no cumplen con la clave/valor de codificación? ¿Y para qué pruebas tus nodos? – Coocoo4Cocoa

+0

Las mayúsculas forman parte, pero también los nombres de nodo no siempre coinciden con el nombre de la variable. Por ejemplo, DetailPageURL puede asignar a pageURL, Título a título, etc. –

1

Busque en NSCoding. Puede usar el protocolo NSCoding para guardar su objeto, propiedades y todo, como datos.

Una vez que su objeto cumple con NSCoding, puede archivar toda la matriz de objetos usando NSKeyedArchiver.

Tenga en cuenta que si tiene una gran cantidad de objetos, esto puede afectar drásticamente el rendimiento de la aplicación en el iPhone durante la carga y el guardado.

+0

NSCoding parece una gran solución, agosto. Sin embargo, me preocupa la penalización de rendimiento por usarlo. Mis objetos suelen contener 5/6 variables de instancia, tipos de datos fundamentales. Me pregunto cuántos tardaría el tanque en mi aplicación. – Coocoo4Cocoa

+0

Sin embargo, está trabajando con un servicio web XML, sin preguntar cómo mantener sus objetos en una fuente de datos. –

+0

¿Tiene un efecto positivo o negativo? –