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 funcionan juntos Core Data, iCloud y CloudKit.
Por lo que entendemos, CloudKit es solo una forma de obtener y recuperar datos hacia / desde la nube. ¿CloudKit es solo una forma diferente de sincronizar datos con iCloud?
Mis preguntas son:
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?
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 almacenamiento en caché limitado.
- ¿Cómo funcionará eso si la cuenta de iCloud no está habilitada?
Si alguien puede desglosar lo que hace cada tecnología en el proceso de guardar y sincronizar la base de datos central fuera de línea y en línea.
Mi comprensión actual es:
Los datos básicos se utilizan para almacenar datos localmente
iCloud sincroniza los datos y los almacena en la nube
CloudKit brinda la capacidad de almacenar y administrar datos en la nube.
Espero haber proporcionado suficiente información para que esta pregunta no se cierre.
Respuestas:
Es como esto:
Si quisiera usar CloudKit con Core Data, tendría que escribir su propio código personalizado para traducir entre objetos administrados y registros de CloudKit. No es imposible, pero es más código para escribir. Se podría ser más fiable, pero es demasiado pronto para decir con seguridad.
Escribí una publicación de blog que describe CloudKit desde la perspectiva de alguien que ha usado Core Data e iCloud en el pasado.
Actualización , junio de 2016: a partir de la documentación más reciente de
NSPersistentStoreCoordinator
, todo lo relacionado con Core Data con iCloud está marcado como obsoleto. Como resultado, probablemente debería evitarse para nuevos desarrollos.fuente
Con iOS 13, Apple anunció nuevas funciones en Core Data para trabajar mejor con CloudKit. La adición principal es NSPersistentCloudKitContainer, que básicamente administra la sincronización entre Core Data y CloudKit por usted.
Puede obtener más información en la sesión de WWDC Uso de datos básicos con CloudKit .
Apple también lanzó una buena colección de documentos para este mismo uso: Duplicar un almacén de datos centrales con CloudKit .
fuente