2009-05-29 7 views
14

Sto lavorando a un'app di dati di base (per iPhone 3.0, anche se non credo che faccia davvero la differenza qui) e dovrà essere spedito con un database "di avviamento" pieno di dati. Con SQLite, dovrei semplicemente copiare l'app del database popolato dal bundle nella directory dei documenti dell'app al primo avvio e quindi caricare quel database: tutte le informazioni sarebbero arrivate e saremmo pronti a partire. Ma con Core Data, non sono sicuro di poter salvare l'archivio Persistent nel pacchetto App e copiarlo prima che Core Data inizi a fare il suo dovere. Ciò causerà problemi? C'è un bel po 'di dati iniziali, quindi non voglio comprimerlo in un altro formato e devo analizzarlo.Fornire dati di base per l'applicazione Core Data?

+0

Ciao Zaph, potresti chiarirlo per favore? Controllo del timbro del file modificato Vedo che il file viene sempre modificato indipendentemente dall'estensione. Come intendi che Xcode cambia il contenuto del file? –

risposta

17

Sì, è possibile copiare su un archivio persistente pre-compilato.

Ho creato un'applicazione Mac che popola un negozio. È copiato nel mio pacchetto e all'inizio, copiato nella directory di Documenti. Funziona bene Mi è stato detto che l'esempio di Core Data Books è stato sviluppato allo stesso modo.

Si prega di notare che questo non significa che è sufficiente copiare su qualsiasi vecchio file SQLite. Deve essere un archivio persistente di Core Data, anche se penso che tu capisca quello in base alla tua domanda.

+0

Pensi che sia corretto inserire popolarmente lo store persistente nella prima esecuzione della mia app? Questo non renderebbe la mia app considerevolmente più piccola da trasferire poiché dovrei includere un database SQLite? – leolobato

+1

Se la tua app può farlo rapidamente, senza fare arrabbiare un utente in attesa, allora sembra un bel modo per farlo. – Hunter

+1

Fai attenzione. A meno che i tuoi dati non possano essere generati algoritmicamente, sembra che i risparmi di dimensioni dei file che ottieni facendo il popolamento dei tuoi dati in fase di runtime siano compensati dalla quantità di codice di inserimento dati che devi includere nella tua applicazione. –

1

In realtà c'è un trucco: è necessario nominare il file che si sta copiando con un'estensione diversa da ".sqlite", ".bin" farà. Altrimenti Xcode cambierà il contenuto del file quando lo copia nell'app durante la fase di compilazione e non verrà caricato.

+0

È ancora vero? – Suragch

+0

Scusa, non lo so. – zaph