Pregunta

Estoy usando SQLite como origen de datos en una aplicación para el iPhone. Tengo dos preguntas con respecto a las actualizaciones de aplicaciones.

1.) Los datos son todos config / no transaccional. Esto quiere decir que es de sólo lectura. Cuando puedo actualizar / añadir datos de configuración, voy a bien expedir una actualización de la aplicación. Cuando un usuario recibe un iPhone aplicación actualizada, hace el original desinstalado? Si ese es el caso, estoy bien porque se desplegarán los nuevos datos de configuración db. Si ese no es el caso, ¿cómo puedo reemplazar datos?

2.) Los datos son de configuración y transaccional. Es decir, el usuario puede guardar los datos en la base de datos. Cuando el usuario actualiza a una nueva versión de la aplicación, que quieren mantener sus datos existentes, sino que reemplazar todos los datos de configuración. Supongo que había necesidad de tener escrituras de inserción y actualización almacenados dentro de la aplicación para lograr esto. Lo que es una forma eficaz de hacerlo?

¿Fue útil?

Solución

cdespinosa ha descrito escenario # 1 bien, así que voy a hacer frente a # 2.

No he hecho esto en el iPhone todavía, pero en un entorno de escritorio la manera más fácil de manejar esto es para mantener sus datos de configuración en una base de datos independiente. Puede adjuntar a varias bases de datos con bastante facilidad. Comienza con la apertura de su base de datos principal, que probablemente debería ser la base de datos que puede cambiar. Entonces sqlite3_exec una declaración ATTACH, que se ve así:

ATTACH 'filepath' AS config;

A partir de entonces, se puede hacer algo como esto:

SELECT * FROM UserTableName;
SELECT * FROM config.ConfigurationTableName;

Es mi entendimiento de que si se escribe en la base de datos de configuración de la aplicación fallará un cheque firma y no arranca, y la versión de SQLite incluido con el iPhone tiene edad suficiente para no apoyar la única bandera leer. Por esta razón, debe copiar el archivo de base de datos de configuración en la caja de arena y abrir esa copia en lugar de la de su paquete.

(Puede, por supuesto, utilizar SQL y copiar los valores de una base de datos a otro. Pero si ya está copiando toda la base de datos de configuración a su caja de arena ... y que debe estar ... entonces eso es sólo una paso adicional. Sólo hay que conectar.)

Espero que alguien más le puede proporcionar más detalles. :)

Otros consejos

Cuando el usuario actualiza la aplicación, el viejo paquete de aplicación se desinstala y se instala el nuevo paquete de aplicación, pero los datos de usuario asociados con el paquete de aplicación está intacto.

Así que sus opciones son: a) dejar sus datos en el paquete de aplicación (que va a ser reemplazado automáticamente) o b) copia unilateralmente al área de datos de usuario en la primera ejecución (por lo que reemplazar intencionadamente en la actualización) .

Te dejaré # 2 a una persona sqlite-entendido, pero es posible que desee utilizar la etiqueta "SQLite" en lugar de la etiqueta "mysql" si eso es lo que está haciendo realmente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top