Pregunta

Queremos tomar datos XML y convertirlos en un objeto NSDictionary, pero no queremos iterar manualmente sobre el XML. ¿Hay una forma fácil de hacer esto? ¿Cómo estás haciendo los servicios web para tu aplicación de iPhone?

¿Fue útil?

Solución

Si tiene control sobre la salida XML, puede intentar crear una lista de propiedades que luego puede leer en un diccionario usando -dictionaryWithContentsOfURL: (aunque la mejor manera asincrónica sería obtener los datos usando una NSURLConnection y luego convertir los datos) utilizando el método -propertyList en NSString). Puede encontrar más información sobre las listas de propiedades aquí: http: // developer .apple.com / documentation / Cocoa / Conceptual / PropertyLists / Introduction / chapter_1_section_1.html

Por supuesto, la mejor solución es usar un cliente RESTful y una combinación de NSURLConnection para obtener / enviar los datos y las clases TouchXML ( http://code.google.com/p/touchcode/wiki/TouchXML ) para analizar los datos, aunque esto requeriría más trabajo para poner los datos en una diccionario. Por supuesto, si estos van a ser los principales objetos de datos en su sistema, realmente desea utilizar una clase personalizada o SQLite para almacenar los datos, ya que le ofrece mucha más confiabilidad al probar su aplicación que un diccionario.

Otros consejos

Si puede controlar la salida del servidor, intente usar errores. De lo contrario, se queda atascado con el análisis de XML (o JSON si el servidor puede hacer eso), pero hay marcos que puede usar. Consulte la respuesta a esta pregunta .

También, aquí hay una buena descripción general de cómo hacer clientes RESTful en el iPhone:

https: / /developer.apple.com/webapps/articles/creatingrestfulclients.html

Puede devolver los datos en formato JSON. Hay muchos analizadores JSON de código abierto disponibles para el iPhone (siendo TouchJSON uno).

Hay otra clase disponible llamada NSPropertyListSerialization que te brinda un diccionario a partir de datos.

Puedes hacer algo como esto con los datos que recibes

NSDictionary * propertyList;
Formato NSPropertyListFormat;
NSString * errorStr;

propertyList = [NSPropertyListSerialization
               propertyListFromData: receiveData
               mutabilityOption: NSPropertyListImmutable
               formato: & amp; formato
               errorDescription: & amp; errorStr];

Lo sentimos, ¡no sé qué etiquetas se utilizan aquí para formatear el código!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top