2009-07-13 14 views
5

Estoy intentando crear 2 aplicaciones, una que crea una tienda persistente y otra que la consume.Copia de archivos iPhone CoreData de un proyecto a otro

Hasta ahora he creado una aplicación que utiliza CoreData para construir con éxito una base de datos a partir de un archivo XML. Entonces este proyecto contiene el modelo de datos, los archivos .h/.m para las entidades, etc.

Estoy tratando de habilitar la segunda aplicación para que lea ese archivo .sqlite copiando el archivo del modelo de datos, el. h/.m archivos relacionados con las entidades y el archivo sqlite a ese proyecto (a través de agregar existente).

El código se ejecuta pero siempre falla al encontrar objetos en la base de datos.

¿Existen restricciones o pasos correctos para intentar copiar estos archivos?

Respuesta

3

La solución aquí es engañosamente simple.

Simplemente copie su archivo .xcdatamodel de un proyecto a otro y luego, cuando ejecute su aplicación en el simulador por primera vez, creará una carpeta de Documentos para la aplicación. Simplemente suelte sus archivos .sqlite o .binary guardados en el directorio yourApp/Documents en el dispositivo. Puede encontrar el directorio del simulador en "~ usuario/Biblioteca/Soporte de aplicaciones/Simulador de iPhone".

También puede descargar, editar y cargar el directorio de myApp en un iPhone aprovisionado arrastrando y soltando dentro y fuera del Organizador. Mira la lista de aplicaciones.

El iPhone no admite almacenes xml con datos básicos, solo sqlite o atómico (binario). La tienda sqlite es, de lejos, la mejor opción para la mayoría de las aplicaciones, ya que no todo tiene que cargarse en la memoria en tiempo de ejecución.

¿Es esto lo que quieres decir?

+0

¡Gracias! Copié el paquete .xcdatamodeld de un proyecto a otro (con un nombre diferente). Incluso renombré el archivo y el archivo '.xcdatamodel' dentro de él (muestra el contenido del paquete) para que coincida con el nombre del otro proyecto, y todavía parece funcionar bien. Un poco aterrador porque todo es binario para mí. Ojalá hubiera alguna forma de difamar los archivos. Con suerte, los archivos no contienen elementos específicos del proyecto (como el nombre del proyecto). Asegúrese de que su código que configura la pila de Datos centrales utilice el nuevo nombre. Y, es posible que desee eliminar la aplicación antes de volver a ejecutarla para que pueda volver a crear el archivo SQLlite. – ma11hew28

0

creo (no 100 por ciento seguro) en su plist aplicación, si se establece el nombre de paquete de la aplicación a la misma cosa, van a compartir recursos ya que el dispositivo se piensa que son la misma aplicación ...

0

No creo que esto vaya a funcionar de la forma en que lo desees. En el iPhone, cada aplicación se ejecuta en su propia "caja de arena", y no es posible que una aplicación escriba archivos que otro pueda leer.

+1

Pero creo que si tienen la misma ruta de paquete, compartirán los recursos – Daniel

+1

Pero se consideran la misma aplicación – Daniel

+0

En realidad, debería haber sido más claro en mi publicación original. Lo que intento hacer es ejecutar una aplicación en el simulador para crear una base de datos (tienda persistente) de una gran cantidad de archivos XML. A continuación, copie los archivos .m/.h del modelo de datos + base de datos y de la entidad relacionada a la aplicación real que solo leerá la base de datos. Entonces, una vez en el dispositivo real, estoy trabajando en la segunda aplicación. ¿Tiene sentido? ¡Gracias por la ayuda! – rhess

0

¿Realmente se trata de dos proyectos diferentes, o se trata de dos objetivos en el mismo proyecto? Eso parece tener mucho más sentido, y luego puedes compartir objetos de entidad a medida que cambian.

+0

Actualmente realmente los tengo como 2 proyectos diferentes. uno es el 'Creador de Data Store' que carga entidades desde XML a una tienda SQLite persistente, y la otra a la aplicación real. – rhess

0

Para copiar archivos de datos centrales de un proyecto a otro, primero creé un nuevo proyecto con soporte de datos centrales y luego abrí el contenido del archivo coredata anterior y excepto la etiqueta raíz, pegué todas las etiquetas secundarias en el nuevo núcleo archivo de datos en nuevo proyecto. Anteriormente traté de eliminar el archivo de coredata en un nuevo proyecto, copie el anterior y lo cambie y no funcionara.

Cuestiones relacionadas