Cuál será la mejor manera de actualizar la database de ReadOnly de los usuarios usando Core Data (iOS)

Estoy construyendo una aplicación de iOS basada en los datos abiertos de nuestro gobierno,

Yo uso CoreData para almacenar los datos, hay alnetworkingedor de 8 entidades en mi xcdatamodel,

alguna entidad cotains más de 20000 filas de datos, y esta database es READ-ONLY,

No lo haré y el usuario no modificará la database, como ELIMINAR / ACTUALIZAR / CREAR, esta es una database READ-ONLY.

Los datos abiertos del gobierno mantendrán la actualización, pero no está progtwigda (y no a menudo), y necesito que el usuario actualice la database si los datos abiertos se actualizaron.

Estoy considerando cuál es la mejor manera de actualizar la database de los usuarios.

1) Obtenga JSON de mi server, elimine todos los contenidos de la database e inserte nuevamente.

Desventajas: a) El riesgo es alto, el usuario / sistema puede terminar la aplicación mientras se está actualizando. b) gran parte del costo del tráfico de networking

2) Borre la database, Obtenga todos los datos de las entidades de mi server en el simulador de iOS, inserte los datos,

Después de eso, copie la database desde la carpeta Documentos, colóquela en el server, deje que mi usuario descargue la database sqlite completa y cubra la database anterior.

Creo que el segundo será mejor, pero no sé si esto conlleva algún riesgo. o hay desventajas de este método?

¡Gracias!

Si la database es demasiado pesada y de solo lectura, le sugiero que actualice su database y la lance como una nueva versión de su aplicación, de modo que cuando el usuario actualice la aplicación desde la tienda de aplicaciones, se borrará la database anterior y se se instalará uno nuevo, preferiría no correr ningún riesgo de realizar búsquedas de datos de background, puede conducir a errores de terminación de la networking perdidos / de aplicaciones, y la actualización estaría atascada en el medio, estaría mejor seguro y relase una nueva versión con el db actualizado

Hay varias maneras de lograr esto.

La solución más rápida y confiable es download el file de database SQLite actualizado del server en una tarea de background (consulte NSURLSession ). Puede "instalar" fácilmente el file de la database en el dispositivo a través de la copy en la location adecuada.

Esto requerirá que cree esta database en algún lugar fuera de su aplicación, es decir, debe tener control sobre el service web. Esta es la parte más complicada. Pero debe saber que las bases de datos SQLite se pueden compartir en todas las plataforms. Entonces, es posible crear una database SQLite en un server cuya estructura (definida por el esquema de la database) coincida con la del dispositivo. En cualquier caso, debe saber exactamente cómo crear la database SQLite en el server que se puede usar en el dispositivo. Por lo tanto, el dispositivo debe enviar al server toda la información requerida (por ejemplo, la "versión" del esquema de la database) para que el server pueda crear la database adecuada.