¿Es posible sobrescribir sqlite db en la aplicación de iPhone?

He creado la aplicación que se basa en la base de datos Sqlite.

Entonces, en mi aplicación, inicialmente creé la base de datos Sqlite con un solo dato y agregué esa base de datos en mi carpeta "Recursos" en mi proyecto.

Mientras la aplicación se ejecuta por primera vez, verificando la base de datos en la carpeta Documentos (Sandbox) si no significa archivo, copie la base de datos de la carpeta Recurso a la carpeta Documento.

Después de eso, todas las operaciones de inserción y eliminación que se realizan en Db solo en la carpeta de documentos. no en la base de datos en la carpeta de recursos.

Entonces, inserté 50 elementos en la base de datos y luego eliminé la aplicación del Simulador (o) del dispositivo.

Al eliminar la aplicación, db también se eliminó con eso.

Mi pregunta es ==> ¿Cómo sobrescribir la base de datos Sqlite (en la carpeta de recursos) con la base de datos (en la carpeta de documentos) cuando cada actualización en la aplicación (insertar, eliminar)?

porque el archivo db en la carpeta Documment se actualiza al insertar elementos en ese.

Estoy usando XCode 4.2 con iOS 5 sdk.

preguntado el 31 de enero de 12 a las 08:01

5 Respuestas

Usted podrá cambiar el Paquete de recursos una vez que lo haya creado (es decir, el archivo de la aplicación). No puede sobrescribir la base de datos SQLite en la carpeta de recursos de su paquete.

Si aún desea mantener la base de datos anterior, simplemente cópiela de la ruta del simulador y reemplácela cada vez que limpie y compile la aplicación.

EDIT:

Puedes ir a / Usuarios // Biblioteca / Soporte de aplicaciones / iPhone Simulator /"Versión del simulador que usas"/Solicitud/"revisa todas las carpetas para encontrar tu aplicación dentro de esta carpeta"/ "TU APP.app"

Entonces Haga clic en Archivo APP y haga clic en Mostrar contenido del paquete. Ahora podrá ver los recursos que utilizó en el archivo de la aplicación. Puede buscar su base de datos y COPIA DE SEGURIDAD / REEMPLAZO él.

Respondido el 31 de enero de 12 a las 17:01

Gracias Dshah .. Te refieres a Reemplazar el archivo db a través del código (o) simplemente copiarlo a la carpeta de recursos de forma manual .. - user2136

¿Puedes publicar un código de muestra para reemplazar el archivo db? ... será muy útil - user2136

Para el simulador, es fácil reemplazar el archivo db. consulte la sección Editar. Pero nunca intente reemplazarlo en Device. Apple no permite esto. - DShah

En primer lugar, el archivo de base de datos en el paquete de la aplicación (carpeta de recursos) es de solo lectura y la aplicación no puede cambiarlo.

En segundo lugar, cuando se instala una actualización, todos los archivos del paquete de la aplicación se reemplazan por los archivos de la actualización. Los archivos del directorio de documentos no se tocan.

Si necesita actualizar el archivo de la base de datos en el directorio de documentos, deberá implementar un método de actualización en algún lugar y realizar un seguimiento de la versión de la base de datos utilizada.

Respondido el 31 de enero de 12 a las 12:01

No hay manera de que puedas modificar cualquier recurso presente dentro del paquete de la aplicación.
Por eso copiamos el archivo de la base de datos al directorio de documentos de la aplicación, para que podamos modificar el archivo.
Si desea conservar los datos, haga una copia de seguridad de los datos utilizando el iCloud .

Respondido el 31 de enero de 12 a las 12:01

ICloud realiza una copia de seguridad automática de todos los archivos del directorio de documentos. No es necesario agregar métodos de respaldo adicionales. - rckoenes

@rckoenes AFAIK, no se realiza ninguna copia de seguridad hasta que haya habilitado los servicios de iCloud para la aplicación. - Amresh Kumar

No el documentación de Apple establece claramente que los archivos del directorio de documentos están respaldados en iCloud ". 1. Solo se deben almacenar en el / Documents y iCloud realizará una copia de seguridad automática. - rckoenes

@rckoenes Estoy de acuerdo con su punto, pero lo que estoy tratando de decir es que no se hará una copia de seguridad de nada, si los derechos de iCloud no están ahí para la aplicación (es decir, iCloud no está habilitado). - Amresh Kumar

No, tengo varias aplicaciones sin los derechos de iCloud y aparecen en el uso de datos de iCloud en la aplicación de configuración. - rckoenes

Debe hacer esto abriendo otro identificador para la base de datos en su carpeta de recursos y realizar la operación para eso también. Supongo que lo necesita solo cuando lo ejecuta en el simulador por conveniencia.

No puede hacer esto cuando ejecuta en dispositivo.

Respondido el 31 de enero de 12 a las 12:01

Es cierto que no hay forma de volver a copiar los datos de la carpeta de documentos en el paquete de recursos, por lo que le sugiero que haga una copia de seguridad de esa base de datos antes de eliminar la aplicación del simulador o del dispositivo.

Respondido el 31 de enero de 12 a las 16:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.