2009-05-11 13 views
8

Sto lavorando a un progetto in cui è presente la visualizzazione dei dati.Le migliori pratiche? iphone: sincronizzazione dati

Il mio obiettivo finale è che ho una serie di dati forniti con il download dell'app iphone. Ma lo voglio collegato a un back-end, che se l'iphone ha una connessione con internet. può sincronizzare le modifiche dal back-end.

La sincronizzazione non è un problema o la connessione tra il backend & l'iphone.

Ma cosa dovrei usare come archivio dati sul mio iphone? Qual è il modo migliore? I miei dati sono puramente di testo e non devono essere sicuri.

Ma la funzione principale dovrebbe essere l'aggiornamento di alcune parti dei dati (l'aggiunta e l'eliminazione non sono così importanti).

Quindi qual è il modo più semplice (leggi: meno dispendioso sviluppo) o il modo migliore?

  • sqlite?
  • plist?
  • ..?

risposta

3

I migliori risultati saranno probabilmente raggiunti con SQLite. È possibile memorizzare il database iniziale nell'app stessa e copiare nella cartella Documenti. Richiedere i delta dal server all'avvio per mantenere il database sincronizzato. Per la sincronizzazione unidirezionale, è necessario memorizzare un campo di versione e quindi chiedere al server che le istruzioni SQL da eseguire per quella versione siano sufficienti; per la sincronizzazione bidirezionale, sarà probabilmente necessario qualcosa di più complicato.

0

Per una piccola quantità di dati (aka che ci si sente a proprio agio carico tutto in memoria), mi piacerebbe memorizzare i dati utilizzando le NSUserDefaults persistenza mechanims, che può facilmente gestire la serializzazione e la conservazione di strutture di dati di serie su avvio e arresto delle applicazioni. È molto semplice/veloce da usare.

Per dataset più grandi che non devono essere caricati in memoria in una volta, sqlite sembra ragionevole.

+0

I dati possono crescere fino a 1mb, non è troppo per NSUserDefaults? Esiste una buona pratica per salvare le strutture di dati (come il dizionario o gli array) in sqlite? –

0

Un altro approccio sarebbe utilizzare il metodo NSDictionary writeToFile; che scriverà un NSDictionary (che sembra risolvere le tue esigenze di archiviazione). Quindi, per reinfilare i dati all'avvio, si otterrà un percorso per il file plist (scritto da writeToFile) e poi il file NSMutableDictionary initWIthContentsOfFile: path.

Dai un'occhiata a "iPhone SDK Application Development", di Jonathan Zdziarski, al Capitolo 11: Impostazioni dell'applicazione. Oppure dai un'occhiata al capitolo più dettagliato sulla gestione dei file e dei dati della Guida alla programmazione delle applicazioni Apple per iPhone.

Ero sulla stessa barca, pensando che avrei bisogno di SQLLite per archiviare i dati scaricati da un servizio web. Ho sostituito il servizio web con un processo più semplice che gestisce le richieste JSON e restituisce i miei dati in un formato NSDictionary. Quindi uso JSON SDK 2.2 per iPhone per prendere i dati JSON in arrivo e memorizzarli in un NSDictionary. Quindi, quando posso facilmente memorizzare i dati nel plist come menzionato sopra.

Questo funziona per me, ma a seconda di cosa stai facendo con i tuoi dati forse hai bisogno di qualcosa di diverso.

Buona fortuna.