Acabo de hacer una búsqueda rápida y no surgió nada demasiado relevante, así que aquí va.iOS Implementando actualizaciones de la aplicación. Mantener intactos los datos de usuario cuando se requiere actualización de DB
He lanzado la primera versión de una aplicación. He realizado algunos cambios en SQLite db desde entonces, en la próxima versión necesitaré actualizar la estructura de la base de datos pero retener los datos del usuario.
¿Cuál es el mejor enfoque para esto? Actualmente estoy pensando que en la actualización de la aplicación, nunca reemplazaré el archivo de base de datos del usuario (carpeta de documentos, no en paquete) sino que modificaré su estructura mediante consultas SQL.
Esto implicaría hacer un seguimiento de los cambios realizados en la base de datos desde la versión anterior. Escriba todos estos cambios en consultas SQL y ejecútelos para llevar el DB a la revisión más reciente. También necesitaré mantener un campo en la base de datos para rastrear el número de versión (mantener la línea con la versión de la aplicación para simplificar).
A menos que haya enganches específicos, métodos de delegado que son disparados en la primera ejecución después de una actualización, pondré llamadas para esta lógica en el mismo comienzo de la aplicaciónDelegate, antes de ejecutar cualquier otra cosa.
Al hacer esto, mostraré "Actualización de la aplicación" o algo así para el usuario.
Lo siguiente que sucede es que hay un error en algún punto de la línea y la actualización falla. ¿El DB estará desactualizado y la aplicación no funcionará correctamente ya que espera una versión más nueva?
Debo tomar sobre mí mismo para simplemente eliminar el archivo de base de datos del usuario y reemplazarlo con la nueva versión del paquete de la aplicación. O, ¿debería simplemente probar, probar, probar hasta que todo sea sólido de mi lado y si ocurre un error por parte del usuario es otra cosa, en cuyo caso no puedo hacer nada solo descartar los datos?
Cualquier idea sobre esto sería muy apreciada. :)
Gracias!
Alterar la estructura db al inicio de la aplicación debería estar bien. Solo asegúrate de hacer esto correctamente y evitar que el usuario interactúe con tu aplicación durante este tiempo (lo que no debería demorar demasiado). Como dijo antes, mantenga el número de versión en algún lugar en los valores predeterminados y compare los números de versión al inicio. – tilo
[AT] John Topley, gracias por las correcciones ortográficas. Tonto de mí. ;) @Tilo Eso es lo que estoy haciendo en este momento, parece un buen enfoque. Gracias. :) – conor