Esiste un modo semplice per lavorare con i servizi Web per gli sviluppatori di iPhone?
Domanda
Vogliamo prendere i dati XML e convertirli in un oggetto NSDictionary, ma non vogliamo iterare manualmente su XML. C'è un modo semplice per farlo? Come stai facendo i servizi web per la tua app per iPhone?
Soluzione
Se hai il controllo sull'output XML puoi provare a creare un elenco di proprietà che puoi quindi leggere in un dizionario usando -dictionaryWithContentsOfURL: (anche se il modo migliore asincrono sarebbe quello di ottenere i dati usando un NSURLConnection e quindi convertire i dati usando il metodo -propertyList su NSString). Puoi trovare ulteriori informazioni sugli elenchi di proprietà qui: http: // developer .apple.com / documentazione / cacao / concettuale / PropertyLists / Introduzione / chapter_1_section_1.html
Naturalmente la soluzione migliore è usare un client RESTful e usare una combinazione di NSURLConnection per ottenere / inviare i dati e le classi TouchXML ( http://code.google.com/p/touchcode/wiki/TouchXML ) per analizzare i dati, sebbene ciò richiederebbe più lavoro per inserirli in un dizionario. Naturalmente, se questi saranno i principali oggetti di dati nel tuo sistema, vuoi davvero utilizzare una classe personalizzata o SQLite per archiviare i dati in quanto ti offre molta più affidabilità nel testare la tua app rispetto a un dizionario.
Altri suggerimenti
Se riesci a controllare l'output del server, prova a usare le liste. Altrimenti sei bloccato con l'analisi di XML (o JSON se il server può farlo), ma ci sono framework che puoi usare. Vedi la risposta a questa domanda .
Inoltre, ecco una buona panoramica di come eseguire client RESTful su iPhone:
https: / /developer.apple.com/webapps/articles/creatingrestfulclients.html
È possibile restituire i dati in formato JSON. Esistono molti parser JSON open source disponibili per iPhone (TouchJSON è uno).
È disponibile un'altra classe chiamata NSPropertyListSerialization che ti fornisce un dizionario dai dati.
Puoi fare qualcosa del genere con i dati che ricevi
NSDictionary * propertyList;
Formato NSPropertyListFormat;
NSString * errorStr;
propertyList = [NSPropertyListSerialization
propertyListFromData: receivedData
mutabilità Opzione: NSPropertyListImmutable
formato: & formato;
errorDescription: & amp; errorStr];
Siamo spiacenti, non so quali tag vengono utilizzati qui per la formattazione del codice!