2011-08-09 7 views
6

Quiero brindar soporte iCloud para mi contenedor en sqlite. No está usando coredata.¿Cómo habilitar el soporte de iCloud para sqlite?

Me pregunto cómo habilitar iCloud para ello. El contenido de la base de datos se cambia todo el tiempo (es para facturación). Además, si es posible tener algún tipo de control de versiones será genial.

¿Existe alguna muestra que pueda usar para hacer esto?

Respuesta

6

La respuesta corta es no, necesitaría utilizar Core Data como sospechaba. Apple ha declarado que sqlite no es compatible.

Editar: Salida de la sección sobre iCloud that's now in the iOS Application Programming Guide en Uso de iCloud en conjunción con bases de datos

Uso de iCloud con una base de datos SQLite es posible sólo si su aplicación utiliza de Datos Básicos para gestionar la base de datos. Acceder a archivos de bases de datos en vivo en iCloud utilizando las interfaces SQLite no es compatible y probablemente corrompará su base de datos. Sin embargo, puede crear una tienda de Datos centrales basada en en SQLite, siempre que siga unos pasos adicionales al configurar sus estructuras de Datos básicos . También puede continuar utilizando otros tipos de almacenes de datos Core , es decir, tiendas no basadas en SQLite, sin ninguna modificación especial .

+0

¿Dónde Apple dijo eso? – mamcx

+0

Acabo de editar mi publicación para incluir la fuente – kris

7

No puede simplemente poner la base de datos SQLite en el contenedor de iCloud, ya que podría corromperse. (Al modificar una base de datos SQLite, se crean y renombran archivos temporales, de modo que si el proceso de sincronización comienza a copiar esos archivos, obtendrá una base de datos corrupta)

Si no desea trasladarse a Core Data, puede hacer lo que hace Core Data: almacenar su base de datos en su carpeta de documentos y almacenar un registro de transacciones en el contenedor de iCould. Cada vez que cambia la base de datos, agrega esos cambios a un archivo de registro, para que pueda reproducirlos y realizar cambios equivalentes en otros dispositivos.

Esto se vuelve bastante complicado: aparte de obtener la lógica de registro/respuesta correcta, querrá unir los cambios redundantes y colapsar periódicamente el registro en una copia completa de la base de datos.

Es posible que le resulte más fácil desarrollar una solución si puede explotar el conocimiento de su aplicación (Core Data tiene que resolver el problema en el caso general). Por ejemplo, puede guardar las facturas como archivos separados en el contenedor de la nube (texto, Lista de propiedades, XML, JSON, lo que sea), escribirlas a medida que cambia la base de datos e importarlas solo si el sistema le informa que fueron creadas o modificadas.

En resumen, su elección es migrar a Datos centrales o escribir una solución de sincronización usted mismo. Cuál es el mejor depende de los detalles de su aplicación.

Cuestiones relacionadas