Considera una aplicación de iPhone que es un catálogo de animales. La aplicación debe permitir al usuario agregar información personalizada para cada animal, digamos una calificación (en una escala de 1 a 5), así como algunas notas que pueden ingresar sobre el animal. Sin embargo, el usuario no podrá modificar los datos del animal en sí. Supongamos que cuando la aplicación se actualiza, debería ser fácil cambiar la parte del catálogo (estática), pero nos gustaría que la parte de información del usuario personalizada (dinámica) se retenga entre las actualizaciones, para que el usuario no pierda ninguna de su información personalizada.iPhone y Core Data: ¿cómo retener los datos ingresados por el usuario entre actualizaciones?
Probablemente querríamos utilizar Core Data para compilar esta aplicación. Digamos también que ya contamos con un proceso previo para leer en los datos de los animales para rellenar previamente el almacén de respaldo (SQLite) que utiliza Core Data. Podemos incrustar este archivo de base de datos en el paquete de la aplicación en sí, ya que no se modifica. Cuando un usuario descarga una actualización a la aplicación, la nueva versión incluirá la última base de datos del catálogo de animales (estática), por lo que no debemos preocuparnos de que esté desactualizada.
Pero, ahora la parte complicada: ¿cómo almacenamos los datos personalizados del usuario (dinámico) de una manera sensata?
Mi primer pensamiento es que la base de datos (dinámica) debe almacenarse en el directorio de documentos para la aplicación, por lo que las actualizaciones de la aplicación no afectan a los datos existentes. ¿Estoy en lo correcto?
Mi segundo pensamiento es que la base de datos personalizada de usuario (dinámica) no está en la misma tienda que el catálogo de animales (estático), no podemos ingenuamente establecer una relación entre la Calificación y las entidades de Notes (en una base de datos) y la entidad Animal (en la otra base de datos). En este caso, me imagino que una solución sería tener una propiedad de cadena "nombreAnimal" en la entidad de Calificación/Notas, y hacerla coincidir en tiempo de ejecución. ¿Es esta la mejor manera de hacerlo, o hay una forma de "sincronizar" dos bases de datos diferentes en Core Data?
@ Shaggy Frog ... Ahora estoy enfrentando el mismo problema. Veo que su solución es la correcta para resolver este problema, pero me gustaría saber si ha descubierto una forma mejor de hacerlo. gracias por la solución de todos modos. es la mejor ayuda que he encontrado hasta ahora. – learner2010
@ user621808 La única solución sería no reconstruir la base de datos cada vez que actualice los datos. En otras palabras, compilarlo exactamente una vez y luego editarlo a mano cada vez que se agreguen/eliminen/editen. –