2011-02-08 9 views
5

W mojej aplikacji na iPhone'a otrzymuję dane json ze zdalnego serwera, parsuję je za pomocą Json Framework i przedstawiam w widoku UI. Chcesz też umożliwić użytkownikowi zapisywanie danych na urządzeniu, aby można było go wyświetlać w trybie offline. Zastanawiam się, czy przechowywanie danych json bezpośrednio jest lepszym lub gorszym wyborem niż wykonanie obiektu, a następnie zapisanie go za pomocą NSCoding + NSKeyedArchiver. Zakładam, że zaletą przechowywania ciągów json w obecnej postaci jest to, że zajmuje mniej miejsca na dysku niż zarchiwizowany obiekt, podczas gdy z drugiej strony przechowując zarchiwizowane obiekty, nie trzeba analizować przechowywanych danych za każdym razem, zużywa mniej pamięci.Przechowywanie danych json na iPhonie: zapisz ciąg json, tak jak jest, VS uczyń obiekt z json i użyj NSCoding + NSKeyedArchiver

Czy istnieje najlepszy ogólny wybór? Czy są jakieś najlepsze praktyki w tej sprawie? Rozmiar plików json wynosi około 8 KB.

Odpowiedz

6

Używam innego podejścia. Gdy dane JSON zostaną przeanalizowane w mojej aplikacji, zostaną zapisane w NSDictionary. Utrzymuję to jako plik .plist.

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

załadować:

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

To jest to!

+0

To wydaje się proste, ale skuteczne podejście. Dzięki! Czy używa mniej miejsca na dysku niż obiekt zarchiwizowany? – Kremk

+1

@Kremk: Prawdopodobnie używa tego samego lub więcej miejsca. Format plist nie jest szczególnie wydajny, ponieważ jest to czytelny dla człowieka format XML. Archiwum z kluczami może przechowywać pewne rzeczy w formacie binarnym (np. "Może", ponieważ nie sprawdziłem), co da ci trochę oszczędności miejsca. – JeremyP

+0

Zgadzam się z @JeremyP, ale biorąc pod uwagę, że są to pliki 8Kb, nie warto poświęcać więcej pracy. – Hiltmon