Desarrollo de las nubes Ios para dummies

Cuando se utiliza un servicio web que se basa en la nube, su respuesta es probable que sea en JSON o XML, dos formatos estándar para la transmisión de datos entre un servidor y aplicaciones web. Habrá momentos en los que tiene que elegir entre los dos formatos, pero otras veces hay que ir con lo que se obtiene.

La geocodificación servicio web de Google, por ejemplo, te da una opción.

Si desea que la respuesta en formato XML, se utiliza

http://maps.googleapis.com/maps/api/geocode/xml

Si quería la respuesta en JSON, utilizaría

http://maps.googleapis.com/maps/api/geocode/json?paremters

Aunque similar en intención, cómo obtener información de XML y estructuras de datos JSON es muy diferente en la ejecución.

Analizar una respuesta XML desde la Nube

Cuando se utiliza un servicio web que se basa en la nube, su respuesta podría estar en XML. Si, cuando se trabaja con su servicio web basado en la nube, se va a introducir la siguiente en su navegador web

http://maps.googleapis.com/maps/api/geocode/xml?sensor=trueaddress=Empire
Contrucción del Estado

usted conseguiría recuperar algo XML - esto, por ejemplo:

# 133-40.7484395-73.9856709# 133-

Desde XML no exactamente expresarse en formas que son fáciles de entender, entonces tendría que analizar lo que sea que XML te da.

Recuerde XML se compone de elementos que tienen etiquetas de inicio y fin. Para llegar a la información a través de iCloud, se utiliza el NSXMLParser clase que utiliza el patrón de delegación. Así es como que iba a funcionar:

NSXMLParser * XMLParser = [[alloc NSXMLParser] initWithdata: datos] - [XMLParser setDelegate: self] - [parse XMLParser] -

Resulta que hay cuatro métodos de delegado NSXMLParser que pondrá en práctica para analizar una estructura de datos XML:

parser:didStartElement:namespaceURI:qualifiedName:attributes:parser:foundCharacters:parser:didEndElement:namespaceURI:qualifiedName:parser:parseErrorOccurred:

analizador: didStartElement: namespaceURI: qualifiedName: Atributos: le permite saber que el analizador ha encontrado un elemento con una etiqueta, por ejemplo, y le toca a usted para extraer los datos de la analizador: foundCharacters: método.

Analizar una Respuesta JSON de la Nube

Cuando se utiliza un servicio web que se basa en la nube, su respuesta podría estar en JSON. Si, cuando se trabaja con su servicio web basado en la nube, se va a introducir la siguiente en su navegador web

http://maps.googleapis.com/maps/api/geocode/json?sensor=trueaddress=Empire 
Contrucción del Estado

que te vuelvas un poco de JSON - lo siguiente, por ejemplo,

resultado {resultados: [{{{geometría ...límites: {noreste: {Lat: 40.7489545,lng: -73,98483449999999},suroeste: {Lat: 40.7479245,lng: -73.9865073}},localización: {Lat: 40.7484395,lng: -73.9856709}, ...}

Desde JSON es tan críptica como XML, usted entonces tiene que analizar lo que sea que JSON te da.

JSON de análisis, sin embargo, es bastante diferente de análisis sintáctico XML. JSON se basa en dos estructuras estás tranquila familiarizados con - matrices y diccionarios. El ejemplo siguiente utiliza JSON tanto:

NSError * Error = nil-NSDictionary * responseDict = [NSJSONSerialization JSONObjectWithdata: datos 
Opciones: NSJSONReadingMutableContainers error: Error] -

Al hacer el análisis sintáctico JSON, tienes pocas opciones que puede establecer así:

  • NSJSONReadingMutableContainers: Las matrices y los diccionarios que recibe de vuelta son mutables para que pueda modificarlos. El valor predeterminado es inmutable.

  • NSJSONReadingMutableLeaves: Las cuerdas que te dan la espalda son mutables para que pueda modificarlos. El valor predeterminado es inmutable.

  • NSJSONReadingAllowFragments: Especifica que el analizador debe permitir que los objetos de nivel superior que no son matrices o diccionarios. El valor por defecto requiere que los objetos de nivel superior JSON a ser una arrays o diccionarios.

Cuando se utiliza el NSJSONSerialization clase, (por lo general, pero no necesariamente) volver ya sea una matriz o diccionario que puede incluir cadenas y números e incluso otras matrices y diccionarios (creo lista de propiedades de objetos aquí).

En este caso, se puede obtener en el sitio lat y lng haciendo

NSDictionary * result = [resultados objectAtIndex: 0] -NSDictionary * geometría = [resultado objectForKey: @ "geometría"] - NSDictionary * Ubicación = [geometría objectForKey: @ "ubicación"] - latitud = [ubicación valueForKey: @ "lat"] -longitude = [ubicación valueForKey: @ "lng"] -