Video: Your First User Interface (2019) - Lesson 4 2024
Di Neal Goldstein
Quando parli di programmazione del cloud iOS, stai parlando di due cose: iCloud (che è implementato per te da Apple e ti consente di sincronizzare i dati tra i dispositivi) e servizi web (che ti consentono di avere alcune delle elaborazioni della tua app eseguite da un computer remoto da qualche parte nel mezzo di chissà dove). I servizi Web si affidano a modi efficienti di consegnare richieste di servizi Web - richieste fatte da un utente per i dati memorizzati nel cloud. I due formati più efficienti (per ora, almeno) sono XML e JSON. I suggerimenti che trovi qui ti mostrano come impostare una richiesta web (utilizzando il servizio web di Google Geocoder come esempio) e come analizzare sia la risposta XML che la risposta JSON in modo da poter utilizzare i dati del servizio web nella tua applicazione.
Analisi dei dati restituiti dal cloud da un servizio Web
Quando si utilizza un servizio Web basato sul cloud, è probabile che la risposta sia in JSON o XML, due formati standard per la trasmissione dati tra un server e un'applicazione web. Ci saranno momenti in cui puoi scegliere tra i due formati, ma altre volte devi andare con quello che ottieni.
Il servizio Web Geocoding di Google, ad esempio, ti offre una scelta.
Se si desidera la risposta in formato XML, si useranno
// maps. googleapis. it / maps / api / geocode / xml
Se si desidera la risposta in JSON, si useranno
// maps. googleapis. com / mappe / api / geocode / JSON? paremters
Sebbene simili nell'intento, il modo in cui ottieni informazioni dalle strutture di dati XML e JSON è molto diverso nell'esecuzione.
Analisi di una risposta XML dal cloud
Quando si utilizza un servizio Web basato sul cloud, la risposta potrebbe essere in XML. Se, quando si utilizza il servizio Web basato su cloud, è necessario immettere quanto segue nel proprio browser Web
// maps. googleapis. com / mappe / api / geocode / xml? sensor = true & address = EmpireState Building e
potresti recuperare un po 'di XML - questo, ad esempio:
… 40. 7484395 -73. 9856709 …
Dal momento che XML non si esprime esattamente in modi che sono facili da comprendere, è necessario analizzare qualunque sia l'XML fornito.
Ricorda che XML è composto da elementi con tag di inizio e fine. Per ottenere le informazioni tramite iCloud, si utilizza la classe NSXMLParser che utilizza il modello di delega. Ecco come funzionerebbe:
NSXMLParser * xmlParser = [[NSXMLParser alloc] initWithData: data]; [xmlParser setDelegate: self]; [xmlParser parse];
Si scopre che ci sono quattro metodi delegati NSXMLParser che verranno implementati per analizzare una struttura dati XML: