ios core-data icloud cloudkit

ios - Usando Core Data, iCloud y CloudKit para la sincronización y copia de seguridad y cómo funciona en conjunto



core-data (1)

Es como esto:

  • Core Data en sí mismo, es completamente local y no funciona automáticamente con ninguno de los servicios en la nube de Apple.
  • Core Data con iCloud habilitado activa la sincronización a través de iCloud. Los cambios que guarde en los Datos principales se propagan a la nube y los cambios que se realizan en la nube se descargan automáticamente. Los datos se almacenan tanto en iCloud como en un archivo de tienda local persistente, por lo que está disponible incluso cuando el dispositivo está fuera de línea. No tiene que escribir ningún código específico de la nube, solo necesita agregar escucha para los cambios entrantes (que es muy similar a los cambios realizados en un contexto de objeto gestionado diferente).
  • CloudKit no está relacionado con los datos principales. No es un sistema de sincronización, es un sistema de transferencia. Lo que significa que cada vez que desee leer / escribir datos en la nube, debe realizar llamadas explícitas a la API de CloudKit para hacerlo. Nada sucede automáticamente CloudKit no almacena datos en el dispositivo, por lo que los datos no están disponibles si el dispositivo está fuera de línea. CloudKit también agrega algunas características que no están disponibles para Core Data con iCloud, como los datos compartidos públicos y la capacidad de descargar solo una parte del conjunto de datos en lugar de todo.

Si desea utilizar CloudKit con Core Data, debe escribir su propio código personalizado para traducir entre objetos gestionados y registros de CloudKit. No es imposible, pero es más código para escribir. Puede ser más confiable pero es demasiado pronto para decirlo con certeza.

Escribí una publicación de blog que describe CloudKit desde la perspectiva de alguien que ha utilizado Core Data e iCloud en el pasado.

Actualización , junio de 2016: a partir de la documentación más reciente para NSPersistentStoreCoordinator , todo lo relacionado con Core Data con iCloud está marcado como obsoleto. Como resultado, probablemente debería evitarse para un nuevo desarrollo.

Estoy en las primeras etapas de la creación de una aplicación en la que me gustaría guardar, sincronizar y hacer copias de seguridad de los datos. La aplicación no almacenará ningún archivo, solo datos en una base de datos. Va a ser iOS 8 en adelante, así que puedo usar CloudKit. Investigué un poco y todavía no tengo claro cómo Core Data, iCloud y CloudKit funcionan en conjunto.

En cuanto a entender CloudKit, es solo una forma de obtener y recuperar datos hacia y desde la nube. ¿CloudKit es una forma diferente de sincronizar datos con iCloud?

Mis preguntas son:

  1. Si utilizo CloudKit, ¿todavía necesito crear una base de datos de datos central local?

    • En caso afirmativo, ¿se sincronizará automáticamente con iCloud o tendré que llamar a métodos para almacenar en ambos lugares?
  2. Si los datos solo se almacenan en la nube, el usuario podrá acceder a ellos cuando el dispositivo iOS no esté conectado a Internet. Leí que CloudKit solo tendrá un caché limitado.

  3. ¿Cómo funcionará si la cuenta de iCloud no está habilitada?

Si alguien puede analizar lo que hace cada tecnología en el proceso de guardar y sincronizar la base de datos de datos principal fuera de línea y en línea.

Mi comprensión actual es:

  • Core Data se usa para almacenar datos localmente

  • iCloud sincroniza los datos y almacena en la nube

  • CloudKit ofrece la capacidad de almacenar y administrar datos en la nube.

Espero haber proporcionado suficiente información para que esta pregunta no se cierre.