2011-02-08 8 views
5

Nella mia applicazione iPhone ottengo dati json da un server remoto, lo analizzo usando Json Framework e lo presento in un UIview. Inoltre, vuole essere in grado di offrire all'utente la possibilità di archiviare i dati sul dispositivo in modo che possano essere visualizzati anche offline. Mi stavo chiedendo se la memorizzazione diretta dei dati JSON sia una scelta migliore o peggiore rispetto alla creazione di un oggetto e quindi al suo salvataggio utilizzando NSCoding + NSKeyedArchiver. Presumo che il vantaggio di archiviare una stringa json così com'è sia che richiede meno spazio sul disco di un oggetto archiviato mentre, al contrario, memorizzando gli oggetti archiviati non è necessario analizzare i dati memorizzati ogni volta utilizzando meno memoria.Memorizzazione di dati json su iPhone: salva la stringa json così com'è VS crea un oggetto da json e usa NSCoding + NSKeyedArchiver

C'è una scelta migliore? Ci sono delle buone pratiche in merito? La dimensione dei file JSON è di circa 8 KB.

risposta

6

Io uso un approccio diverso. Una volta che i dati JSON sono stati analizzati nella mia app, sono memorizzati in un NSDictionary. Lo persistono come un file .plist.

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

per caricare:

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

Questo è tutto!

+0

Questo sembra essere un approccio semplice ma efficace. Grazie! Userebbe meno spazio su disco di un oggetto archiviato? – Kremk

+1

@Kremk: Probabilmente usa lo stesso o più spazio. Il formato plist non è particolarmente efficiente dal punto di vista dello spazio poiché è un formato XML leggibile dall'uomo. Un archivio con chiave potrebbe archiviare alcune cose in un formato binario (come dire "potrebbe" perché non ho controllato) che ti darà un po 'di spazio risparmio. – JeremyP

+0

Sono d'accordo con @JeremyP, ma dato che sono file da 8Kb, non vale la pena di fare molto più lavoro. – Hiltmon