2009-05-29 23 views
14

Estoy trabajando en una aplicación Core Data (para iPhone 3.0, aunque no creo que eso realmente marque la diferencia) y deberá enviarse con una base de datos "inicial" llena de datos. Con SQLite, simplemente haría que la aplicación copie la base de datos poblada del paquete en el directorio de documentos de la aplicación en el primer lanzamiento y luego cargue esa base de datos; toda la información vendrá junto con ella y estaríamos listos para continuar. Pero con Core Data, no estoy seguro de si puedo guardar la tienda Persistent en el paquete de la aplicación y copiarla antes de que Core Data comience a hacer su trabajo. ¿Esto causará algún problema? Hay bastantes datos iniciales, por lo que no quiero empaquetarlos en otro formato y analizarlos.¿Proporcionar datos base para la aplicación de datos básicos?

+0

Hola Zaph, ¿podrías aclarar eso por favor? Comprobando el sello de archivo modificado veo que el archivo siempre se modifica independientemente de la extensión. ¿Cómo quieres decir que Xcode cambia el contenido del archivo? –

Respuesta

17

Sí, puede copiar en una tienda persistente precompilada.

Creé una aplicación de Mac que llena una tienda. Se copia en mi paquete y, al principio, se copia en el directorio de Documentos. Esto funciona bien Me dijeron que el ejemplo de Core Data Books se desarrolló de la misma manera.

Tenga en cuenta que esto no significa que simplemente puede copiar cualquier archivo SQLite anterior. Tiene que ser una tienda persistente de datos centrales, aunque creo que lo entiendes basándote en tu pregunta.

+0

¿Crees que está bien rellenar programáticamente la tienda persistente en la primera ejecución de mi aplicación? ¿No haría esto que mi aplicación sea considerablemente más pequeña para transferir, ya que tendría que tener una base de datos SQLite incluida? – leolobato

+1

Si su aplicación puede hacer esto rápidamente, sin molestar a un usuario en espera, entonces parece una buena forma de hacerlo. – Hunter

+1

Ten cuidado. A menos que sus datos puedan generarse de forma algorítmica, parece que los ahorros de tamaño de archivo que obtendrá poblando sus datos en tiempo de ejecución se verían compensados ​​por la cantidad de código de datos que necesita incluir en su aplicación. –

1

En realidad hay un truco: debe nombrar el archivo que va a copiar con una extensión que no sea ".sqlite", ".bin" va a funcionar. De lo contrario, Xcode cambiará el contenido del archivo cuando lo copie en la aplicación durante la fase de compilación y no se cargará.

+0

¿Sigue siendo así? – Suragch

+0

Lo siento, no sé. – zaph

Cuestiones relacionadas