2011-02-08 14 views
5

En mi aplicación iPhone obtengo datos json de un servidor remoto, los analizo utilizando Json Framework y lo presento en una UIview. También desea poder darle al usuario la opción de almacenar los datos en el dispositivo para que también se pueda ver fuera de línea. Me preguntaba si almacenar los datos de json directamente es una mejor o peor opción que crear un objeto y luego guardarlo usando NSCoding + NSKeyedArchiver. Supongo que la ventaja de almacenar una cadena json tal como es, es que ocupa menos espacio en el disco que un objeto archivado, mientras que, por otro lado, al almacenar objetos archivados, no tiene que analizar los datos almacenados cada vez que usando menos memoriaAlmacenamiento de datos json en el iPhone: guarde la cadena json como es VS haga un objeto de json y use NSCoding + NSKeyedArchiver

¿Existe una mejor opción general? ¿Hay alguna mejor práctica en ese asunto? El tamaño de los archivos json es de aproximadamente 8 KB.

Respuesta

6

Uso un enfoque diferente. Una vez que los datos JSON se analizan en mi aplicación, se almacenan en un NSDictionary. Persisto eso como un archivo .plist.

[myDictionary writeToFile:[self saveFilePath] atomically:YES]; 

Para cargar:

NSMutableDictionary *wholeDictionary = [NSDictionary dictionaryWithContentsOfFile:[self saveFilePath]]; 

eso es todo!

+0

Parece ser un enfoque simple pero efectivo. ¡Gracias! ¿Utiliza menos espacio en disco que un objeto archivado? – Kremk

+1

@ Kremk: Probablemente usa el mismo o más espacio. El formato plist no es particularmente eficiente desde el punto de vista espacial, ya que es un formato XML legible por humanos. Un archivo con clave podría almacenar algunas cosas en un formato binario (digamos "podría" porque no lo he marcado) lo que le ahorrará espacio. – JeremyP

+0

Estoy de acuerdo con @JeremyP, pero dado que son archivos de 8Kb, no vale la pena el esfuerzo para hacer mucho más trabajo. – Hiltmon

Cuestiones relacionadas