Domanda

sto usando SQLite come origine dati in un'applicazione per iPhone. Ho due domande riguardanti aggiornamenti delle applicazioni.

1). I dati sono tutti config / non transazionale. Significato, è in sola lettura. Quando aggiorno / aggiungere i dati di configurazione, vi rilascia un aggiornamento per l'applicazione. Quando un utente riceve un'applicazione per iPhone aggiornato, fa l'originale ottenere disinstallato? Se questo è il caso, sto bene, perché i nuovi dati di configurazione db saranno impiegate. Se questo non è il caso, come faccio a sostituire i dati?

2.) I dati sono config e transazionale. Significato l'utente può salvare i dati nel DB. Quando l'utente aggiorna a una nuova versione dell'app, mi vogliono mantenere i loro dati esistenti, ma sostituire tutti i dati di configurazione. Sto indovinando che avrei bisogno di avere gli script INSERT e UPDATE memorizzati all'interno della app per raggiungere questo obiettivo. Che cosa è un modo efficace per andare su di esso?

È stato utile?

Soluzione

cdespinosa ha descritto lo scenario # 1 bene, quindi mi affrontare # 2.

Non ho ancora fatto questo su iPhone, ma in un ambiente desktop il modo più semplice per gestire questo è quello di mantenere i dati di configurazione in un database separato. È possibile collegare a più database piuttosto facilmente. Inizia aprendo il database principale, che dovrebbe probabilmente essere la base di dati che può cambiare. Poi sqlite3_exec una dichiarazione ATTACH, che assomiglia a questo:

ATTACH 'filepath' AS config;

Da allora in poi, si può fare qualcosa di simile:

SELECT * FROM UserTableName;
SELECT * FROM config.ConfigurationTableName;

E 'la mia comprensione che se si scrive al database di configurazione l'applicazione non potrà un controllo firma e non si avvia, e la versione di SQLite incluso con l'iPhone è abbastanza vecchio per non supportare il flag di sola lettura. Per questo motivo, è necessario copiare il file database di configurazione nella sandbox e aprire quella copia al posto di quello in vostro pacco.

(È possibile, naturalmente, utilizzare SQL e copiare i valori da un database a un altro. Ma se siete già copiando l'intero database di configurazione per la vostra sandbox ... e si dovrebbe essere ... allora questo è solo un passo in più. È sufficiente collegare.)

Spero che qualcun altro in grado di fornire ulteriori dettagli. :)

Altri suggerimenti

Quando l'utente aggiorna l'applicazione, il vecchio pacchetto applicazione viene disinstallata e viene installato il nuovo bundle app, ma i dati degli utenti associati al pacchetto app è intatto.

Così le scelte sono ad a) lasciare i vostri dati nel pacchetto app (che sarà sostituito automaticamente) oppure b) unilateralmente copiarlo nell'area dati utente in prima esecuzione (quindi dovrete intenzionalmente sostituirlo durante l'aggiornamento) .

Lascio 2 # per una persona sqlite-informato, ma si consiglia di utilizzare il tag "sqlite" al posto del tag "mysql" se è quello che si sta effettivamente facendo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top