Cuando una aplicación de iPhone recibe datos como JSON o XML, ¿es mejor almacenar los datos en una matriz nddictionary o mutable?

Al crear una aplicación para iPhone, lo primero que debe hacer es minimizar la cantidad de datos que pasan por la conexión de red, ya que es la parte más lenta de la aplicación. JSON es un formato mucho más compacto que XML porque contiene solo datos, no elementos estructurales o etiquetas. Por eso siempre lo uso.

En segundo lugar, un analizador JSON convierte el JSON en cualquier formato que se necesite en la memoria para el acceso, por lo que si el JSON tiene una matriz de cadenas, por ejemplo, crea una matriz NSA de cadenas, si el JSON tiene un hash de pares clave-valor, crea un NSDictionary para ti. Y si tiene un hash de matrices de cadenas, crea un NSDictionary de NSArrays de cadenas. ¡Simplemente funciona! No importa cuán complejo sea el JSON, el analizador crea una estructura de datos navegable en memoria para usted.

Punto final, si recibe datos de Internet, use siempre estructuras de datos inmutables. Usan menos memoria y es menos probable que ‘corrompa’ los datos mientras accede a ellos e introduce errores difíciles de encontrar. Si necesita cambiar los datos y enviarlos de vuelta, haga una copia mutable.

JSON es más compacto que XML y es mucho más fácil trabajar con él en iOS, porque todo lo que tiene que hacer es crear una instancia de NSJSONSerialization con algunos datos y luego BOOM, tiene un Diccionario (o Array) para trabajar. Si eligió la ruta XML, tendría que usar NSXMLParser, y es muy difícil cargar un diccionario / matriz porque tiene que escribir una gran cantidad de código de análisis basado en eventos.

En cuanto a si ir con NSDictionary o NSMutableArray … bueno, primero, creo que te refieres a NSDictionary o NSArray. Los datos que obtiene de Internet probablemente no deberían modificarse en su extremo, por lo que probablemente nunca querrá crear una matriz Mutable. Si lo hiciera, probablemente tendría una abstracción de nivel superior que ocultaría la colección subyacente.

El uso o no de un diccionario o matriz depende de las necesidades de su aplicación (y NSJSONSerialization lo decide por usted de todos modos).

Entre XML y JSON votaré por JSON porque contiene solo datos y puede crear tipos de datos como NSDictionary, NSArray como mencionan algunos desarrolladores anteriores. Y no necesita usar marcos de terceros como SBJSON u otros porque iOS 5 tiene una biblioteca incorporada NSJSONSerialization para JSON.

Como dijo Hilton, JSON es más compacto, y si usa el analizador SBJSON, analiza y almacena automáticamente los datos para usted como objetos KVO en un NSDictionary.

Entre los desarrolladores, SBJSON es el analizador JSON más aceptado para iOS 4 y versiones posteriores. Con la introducción de iOS 5, Apple ha proporcionado a los desarrolladores la clase de serialización NSJSONS que se encarga de todo el trabajo por usted.

SBJSON puede ser foud en GitHub: http://stig.github.com/json-fram

Además de lo que Hilton ha dicho. Si está desarrollando para iOS 5, puede usar la biblioteca integrada NSJSONSerialization para analizar sus datos codificados JSON. Devolverá un objeto NSData que puede convertir en NSDictionary o NSArray.

La documentación de la NSJSONSerialización se puede encontrar aquí: http://developer.apple.com/libra