Sin categoría

Sincronización con Core Data

Usted ha estado desarrollando su aplicación con una pila de Core Data y ahora quiere añadir el componente de la nube. Pide al usuario que inicie sesión y guarde todos sus datos en la nube para que estén disponibles en todos sus dispositivos. O tal vez se trate de una aplicación para compartir contenidos en la que necesitas distribuir datos a los usuarios de la aplicación.

En cualquier caso, escribir código de red lleva mucho tiempo y es propenso a errores, por lo que puede recurrir a CloudKitAnalice o Firebase para integrar el componente de la nube. En el caso de CloudKitsólo puede admitir dispositivos iOS y si opta por Analice o Firebase tendrías que reescribir todo el código de Core Data.
 
El equipo y la comunidad de Couchbase Mobile han estado trabajando muy duro en un componente pluggable para añadir sincronización a tu aplicación sin tener que reescribir tus modelos Core Data y manteniendo el soporte multiplataforma. En iOSla clase NSIncrementalStore proporciona ganchos para añadir back-ends conectables a su pila de Core Data.

Se llama CBLIncrementalStore y se encuentra en la carpeta Extra de la aplicación .zip archivo descargable aquí.

Asegúrate de incluir CouchbaseLite.framework así como esta clase para usarla en tu proyecto:

 

 

Cómo utilizar CBLIncrementalSore

El proceso de configuración es muy similar a cómo se configuraría una pila de Core Data respaldada por un NSSQLiteStore tienda. Sumerjámonos de lleno.

El objetivo es tener un NSManagedObjectContext que está asociada a un coordinador de almacén persistente que carga nuestro modelo de objetos gestionados. Y finalmente añadimos un almacén persistente de tipo CBLIncrementalStoreType al coordinador del almacén persistente.

 

Puedes crear una nueva clase llamada CoreDataStack para mantener la lógica de configuración:

 

Describamos lo que ocurre paso a paso:

  • Paso 1: Cargar el modelo que hemos definido en la sección .xcdatamodelmodelId archivos.
  • Paso 2: Llamar updateManagedObjectModel: para asegurar que el modelo Core Data es mapeado a un modelo que Couchbase Lite entiende.
  • Paso 3: Inicializar el coordinador del almacén persistente como de costumbre
  • Paso 4: Configurar el contexto del objeto gestionado
  • Paso 5: Comprobar si existe la base de datos Couchbase Lite correspondiente. Si es así, cargamos la base de datos Base de datos CBLDatabase como CBLIncrementalStore tipo de almacén. Si no, realizamos una migración del almacén de datos SQLite anterior a Couchbase Lite.

 

Añadir sincronización

En CBLIncrementalStore tiene una clase base de datos puedes crear replicación como siempre con Couchbase Lite y Sync Gateway:

También puede añadir autenticación con la opción CBLAuthenticator clase. Véase la documentación sobre réplicas para ver cómo hacerlo.

 

Entidades de datos básicos en JSON

Cada vez que se guarda una nueva entidad en Core Data, CBLIncrementalStore añade una clave CBLIS_type en el documento JSON correspondiente almacenado en Couchbase Lite.

 

Desde el punto de vista de Couchbase Lite y Sync Gateway, es JSON como siempre y no hay nada diferente. Pero tener este mapeo en mente es útil porque también puedes usar la API REST para añadir nuevos documentos o mostrarlos en una página web.

curl -X POST -H 'Content-Type: application/json' -d '{"CBLIS_type": "Persona", "nombre": "Johnny"}' https://localhost:4984/testdb/

 

Para los más curiosos: subclase NSIncrementalStore

Para entender cómo funciona CBLIncrementalStore, debemos seguir la especificación api: "Las subclases de NSIncrementalStore deben registrar
su clase con NSPersistentStoreCoordinator, que luego construye instancias de almacén persistente según sea necesario cuando -.
addPersistentStoreWithType:configuration:URL:options:error: se llama". (leer más en nshipster)

Una vez que registremos nuestro nuevo almacén, se llamará a un par de métodos en CBLIncrementalStore, a saber:

+tipo e +inicializar

El método inicializar clase se llama la primera vez que se carga la clase. Ahí es donde CBLIncrementalStore registra
con el NSPersistentStoreCoordinator. Así, cuando llamemos a addPersistentStoreWithType:configuration:URL:options:error: con el tipo CBLIncrementalStore, conocerá este nuevo tipo de almacén.

-loadMetada

Llamado automáticamente por el NSPersistentStoreCoordinator. Creará una base de datos Couchbase Lite, inicializará las vistas para consultar documentos por tipo y por
a muchos y establece los metadatos para el almacén. Este método también crea una consulta en vivo para conflictos
documentos.

-ejecutarSolicitud:conContexto:error:

Se llama a este método para realizar todas las lecturas y operaciones de escritura con una persistencia
backend. 

Si el requestType es NSSaveRequestTypeCBLIncrementalStore se asignará adecuadamente a Core Data
NSManagedObject al documento de Couchbase Lite si se trata de una nueva entidad creada, una actualización o eliminación de objetos. 

Si el requestType es NSFetchRequestType, CBLIncrementalStore consultará los documentos y devolverá una matriz de
según un nombre de entidad y un predicado.

Esto se ajusta a cómo deben inicializarse las subclases de NSIncrementalStore. Puede obtener más información sobre
NSIncrementalStore en nshipster.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por James Nocentini

James Nocentini es el escritor técnico encargado de la documentación de Couchbase Mobile. Anteriormente, trabajó como Developer Advocate y antes de eso como desarrollador front-end para HouseTrip. También disfruta escribiendo tutoriales de Android para raywenderlich.com en su tiempo libre.

2 Comentarios

  1. ¡Impresionante! Una aplicación de demostración de cómo funciona exactamente sería genial. El problema sigue siendo que si quieres obtener datos directamente del servidor, ¡tienes que hacerlo por otros medios!

    1. James Nocentini marzo 16, 2015 a 9:33 am

      Si necesita obtener datos del servidor, puede utilizar la API REST para ello. Los resultados de búsqueda son un buen ejemplo de cómo obtener los documentos directamente del servidor. Puede definir una vista en la consola web del servidor couchbase, luego consultar esta vista a través de la pasarela de sincronización y mostrar los resultados en el dispositivo. Cuando el usuario marque un elemento como favorito o favorito, podrá sincronizarlo con la cuenta del usuario a través de la función de sincronización.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.