Couchbase Móvil

Primeros pasos con Couchbase Lite en tu aplicación iOS : Parte 1

Este post explica cómo puedes empezar a usar Couchbase Lite en tu aplicación iOS. Couchbase Lite es una base de datos JSON embebida que puede funcionar de forma autónoma, en una red P2P, o con un Sync Gateway como endpoint remoto. Aunque veremos el framework en el contexto de una App iOS en Swift, todo lo que se discute aquí se aplica igualmente a apps móviles desarrolladas en cualquier otra plataforma (Android, iOS (ObjC), Xamarin). Las desviaciones se especificarán como tales. ¡Permanece atento a los posts relacionados para las otras plataformas!

NOTA: Vamos a discutir Couchbase Mobile v1.4 que es la versión de producción actual. Hay una versión Vista previa para desarrolladores de la versión 2.0 de Couchbase Mobile . Hablaremos de ello en un próximo artículo.

Fondo

Couchbase Mobile Stack se compone de Couchbase Server, Couchbase Sync Gateway y Couchbase Lite embedded Database. Puede obtener más información sobre el servidor en la Guía de introducción a Couchbase Server y el Sync Gateway en el Guía de introducción a Couchbase Sync Gateway.

Asumiré que estás familiarizado con el desarrollo de aplicaciones iOS y los conceptos básicos de Swift. Si quieres leer sobre bases de datos NoSQL o Couchbase, puedes encontrar un montón de recursos en el Couchbase sitio.

Couchbase es de código abierto. Todo lo que voy a utilizar aquí es libre de probar.

Couchbase Lite

Couchbase Lite puede utilizarse en varios modos de despliegue.

  • Opción 1: Puede utilizarse como base de datos independiente multiplataforma integrada en un dispositivo.
  • Opción 2: Se puede utilizar junto con un Sync Gateway remoto que le permitiría sincronizar datos entre dispositivos. Este caso se puede extender para incluir la pila completa de Couchbase con el Couchbase Server. Desde la perspectiva de Couchbase Lite en el dispositivo, no debería importar si hay un Couchbase Server o no, ya que Couchbase Lite interactuará con el Sync Gateway remoto.
  • Opción 3: Puede utilizarse en modo P2P

Aquí nos centraremos en la Opción 1.

API nativa

Couchbase Lite expone una API nativa para iOS, Android y Windows que permite a las aplicaciones interactuar fácilmente con la plataforma Couchbase. Como desarrollador de aplicaciones, no tienes que preocuparte por el funcionamiento interno de la base de datos integrada de Couchbase Lite, sino que puedes centrarte en crear tu aplicación. La API nativa te permite interactuar con el framework de Couchbase Lite como lo harías con otros frameworks/subsistemas de la plataforma. De nuevo, hablaremos de Couchbase Mobile v1.4 en esta entrada del blog. Puedes obtener una lista completa de las APIs en nuestro Desarrollador Couchbase sitio.

Integración

Hay muchas opciones para integrar el framework Couchbase Lite en tu aplicación iOS. Probablemente la más sencilla sea utilizar sistemas de gestión de dependencias como Cocoapods o Cartagopero si lo prefiere, puede incluir manualmente el framework en su proyecto de aplicación. Echa un vistazo a nuestro Guía de inicio de Couchbase Mobile para las distintas opciones de integración.

Nota que en el caso de una aplicación Swift, después de importar el framework, tendrás que crear un Bridging Header (si tu aplicación no tiene ya uno) e importar los siguientes archivos

 

Aplicación de demostración

Descargue el proyecto de demostración de Xcode desde Repo de Github . Utilizaremos esta aplicación como ejemplo en el resto del blog.

 

Esta aplicación utiliza Cocoapods para integrar el framework Couchbase Lite y pretende familiarizarte con los conceptos básicos del uso del framework Couchbase Lite. Una vez descargada, compila y ejecuta la aplicación. Puedes usar esta aplicación como punto de partida y extenderla para probar otras APIs.

 

Flujo de trabajo básico

Creación de una base de datos local

Abra el DBMainMenuViewController.swift y localice el archivo createDBWithName función.

Esto creará una base de datos con el nombre especificado en la ruta por defecto (/Library/Application Support). Puede especificar un directorio diferente cuando instale la aplicación CBLManager clase.

  1. Crea el objeto CBLDatabaseOptions para asociarlo con la base de datos. Por ejemplo, puede establecer la clave de cifrado que se utilizará con la base de datos mediante la propiedad encryptionKey. Explore las otras opciones en CBLDatabaseOptions clase.
  2. Los nombres de las bases de datos deben estar en minúsculas. La aplicación de ejemplo pondrá automáticamente los nombres en minúsculas. Si tiene éxito, se creará una nueva base de datos local si no existe. Si existe, se devolverá un "handle" de la base de datos existente.

Listado de bases de datos

Esto es muy sencillo. Abra el DBListTableViewController.swift expediente. La dirección allDatabaseNames propiedad en CBLManager enumera las bases de datos creadas.

Añadir un nuevo documento a una base de datos

Abra el DocListTableViewController.swift y localice el archivo crearDocConNombre función.

  1. Como resultado de esta llamada, se crea un Documento con un Id único
  2. Puede especificar un conjunto de propiedades de usuario como pares . Existe una alternativa en la que puede utilizar CBLDocumentModel para especificar los datos de su aplicación. La dirección CBLDocumentModel sólo está disponible para la plataforma iOSEn nuestro ejemplo utilizaremos las propiedades <key:value

Esto crea una nueva revisión del documento con las propiedades de usuario especificadas

Listado de documentos en la base de datos

Abra el DocListTableViewController.swift y localice el archivo getAllDocumentForDatabase función

  1. Obtener el acceso a la base de datos con el nombre especificado
  2. Crear un CBLQuery objeto. Esta consulta se utiliza para obtener todos los documentos. Puede crear un objeto de consulta normal o un objeto de consulta "en vivo". El objeto de consulta "en vivo" es de tipo CBLLiveQuery que se actualiza automáticamente cada vez que se producen cambios en la base de datos que afectan a los resultados de la consulta.
  3. El objeto de consulta tiene una serie de propiedades que pueden modificarse para personalizar los resultados. Pruebe a modificar las propiedades y vea el efecto en los resultados
  4. Tendrá que añadir explícitamente un observador al objeto Live Query para ser notificado de los cambios en la base de datos. Discutiremos esto más a fondo en la sección "Observar cambios en los documentos de la base de datos". No olvides retirar el observador y dejar de observar los cambios cuando ya no lo necesites.
  5.  Ejecute la consulta de forma asíncrona. También puede hacerlo de forma sincrónica si lo prefiere, pero probablemente sea recomendable hacerlo de forma asincrónica si los conjuntos de datos son grandes.
  6. Una vez que la consulta se ejecuta correctamente, se obtiene un mensaje CBLQueryEnumerator objeto. El enumerador de consultas permite enumerar los resultados. Se presta muy bien como fuente de datos para la vista de tabla que muestra los resultados

Editar un documento existente

 Abra el DocListTableViewController.swift y localice el archivo updateDocConNombre función.

  1. Obtener el control del documento que necesita ser editado. La dirección CBLQueryEnumerator se puede consultar para obtener el nombre del documento en el índice seleccionado
  2. Actualice las propiedades del usuario como pares . Existe una alternativa en la que puede utilizar CBLDocumentModel para especificar los datos de su aplicación. Esto sólo está disponible en iOS. Usaremos propiedades en nuestro ejemplo.
  3. Las actualizaciones del documento requerirán un revisionId para indicar explícitamente la revisión del documento que debe actualizarse. Esto se especifica utilizando "_rev". Esto es necesario para la resolución de conflictos. Más información aquí. Esto crea una nueva revisión del documento con las propiedades de usuario especificadas

Borrar un documento existente

 Abra el DocListTableViewController.swift y localice el archivo deleteDocAtIndex función.

  1. Obtiene el manejador del documento que necesita ser editado. Se puede consultar el CBLQueryEnumerator para obtener el identificador del documento en el índice seleccionado.
  2. Borrar el documento. Esto borra todas las revisiones del documento

Observar los cambios en los documentos de la base de datos

Abra el DocListTableViewController.swift y localice el archivo addLiveQueryObserverAndStartObserving función

  1. Para ser notificado de los cambios en la base de datos que afectan a los resultados de la consulta, añada un observador al objeto Live Query . Este es un caso en el que las versiones Swift/ Obj C difieren de otras plataformas móviles. Si está desarrollando en otras plataformas, puede llamar a la función addChangeListener API en el objeto Live Query. Sin embargo, en Couchbase Lite 1.4, esta API no está soportada en las plataformas iOS y en su lugar aprovecharemos el patrón Key-Value-Observer de iOS para ser notificados de los cambios.  Añadir un observador KVO al objeto Live Query para empezar a observar los cambios en la propiedad "rows" del objeto Live Query.
  2. Empezar a observar los cambios

Siempre que se produzca un cambio en la base de datos que afecte a la propiedad "rows" del objeto LiveQuery, tu aplicación recibirá una notificación de cambios. Cuando recibas la notificación de cambio, puedes actualizar tu UI, que en este caso sería recargar la tableview.

Eliminar una base de datos

Abra el DBListTableViewController.swift  y localice el archivo deleteDatabaseAtIndex función.

La eliminación de una base de datos se gestiona mediante una simple llamada a delete() en la base de datos.

Conclusión

Como puedes ver, es bastante sencillo integrar una versión independiente de Couchbase Lite en tu nueva o existente aplicación iOS. Puedes descargar la aplicación de ejemplo de la que hablamos en este post desde Repo de Github y prueba a explorar las distintas interfaces. Si tienes más preguntas, no dudes en ponerte en contacto conmigo en Twitter @rajagp o envíeme un correo electrónico priya.rajagopal@couchbase.com.

En Foros de desarrollo de Couchbase Mobile es otro buen lugar para resolver tus dudas sobre móviles. Además, echa un vistazo a la Portal para desarrolladores de Couchbase para obtener más información sobre Couchbase Mobile.

 

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

Author

Posted by Priya Rajagopal, Directora de Gestión de Productos

Priya Rajagopal es directora sénior de gestión de productos en Couchbase y responsable de las plataformas de desarrollo para la nube y el perímetro. Lleva más de 20 años dedicándose profesionalmente al desarrollo de software en varios puestos de liderazgo técnico y de producto, con más de 10 años centrados en tecnologías móviles. Como delegada de estándares IPTV de TISPAN, fue una colaboradora clave en las especificaciones de estándares IPTV. Tiene 22 patentes en las áreas de redes y seguridad de plataformas.

2 Comentarios

  1. [...] de Couchbase Server, Sync Gateway y Couchbase Lite embedded NoSQL Database. En un post anterior, hablamos de cómo Couchbase Lite se puede utilizar como una base de datos NoSQL incrustada independiente en aplicaciones iOS. [...]

  2. [...] modo. En este post, no vamos a repasar los detalles de la integración con Couchbase Lite. El blog Getting Started With Couchbase Lite es un buen lugar para empezar a [...]

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.