fbpx
 

Tutorial de Introducción a Core Data [Parte 1]

Tutorial de Introducción a Core Data [Parte 1]

1. Introducción

Core Data. El tutorial de esta semana lo vamos a dedicar a conocer el funcionamiento de Core Data.

He elegido esta temática porque he recibido tres emails de diferentes lectores donde me han comentado que están desarrollando una app por su cuenta y les gustaría saber como utilizar Core Data para guardar y recuperar información.

Por ese motivo, vamos a ver de forma rápida la teoría que necesitas conocer y después, como en cualquier tutorial de EfectoApple vas a poder desarrollar una aplicación iOS paso a paso donde verás como implementar Core Data.

De esta forma cuando tengas que desarrollar algún proyecto por tu cuenta podrás usar lo que aprendas en este tutorial para ser capaz de desarrollar una app que integre Core Data perfectamente.

2. ¿Qué vamos a ver en este Tutorial?

Estos son los puntos más importantes en los que nos centraremos:

  • Familiarizarte con el concepto de Persistencia
  • ¿En qué consiste Core Data?
  • Conceptos Fundamentales que debes comprender
  • Crear el Modelo de Datos de tu app utilizando el Editor de Xcode
  • Guardar información en Core Data
  • Obtener información de Core Data
  • Mostrar esa información obtenida en una Table View
  • ¿Cómo integrar Core Data en una Aplicación iOS?

Al terminar este tutorial habrás multiplicado tus poderes de desarrollador por 20 y estarás preparado para integrar este sistema de persistencia en tus apps.

[caja-roja]Este Tutorial corresponde a la primera parte de un Tutorial doble de Introducción a Core Data[/caja-roja]

3. Echando un vistazo a nuestra App

La aplicación que vamos a utilizar para implementar Core Data es la aplicación que desarrollamos en el Tutorial de la semana pasada.

Te recomiendo que le eches un vistazo a ese tutorial, ya que te ayudará a comprender lo que vamos a ver hoy. Puedes acceder al tutorial de la semana pasada desde aquí.

En ese tutorial, desarrollamos una App de Gestión de Tareas que no utilizaba Core Data. Simplemente guardaba las tareas en memoria.

En el tutorial de esta semana vamos a ver que cambios tenemos que realizar en nuestro código para añadir Core Data a nuestra aplicación. De esta forma, podremos guardar y recuperar la lista de tareas cuando queramos.

4. El Concepto de Persistencia

Hemos mencionado antes que Core Data es un sistema de persistencia. Por tanto, lo primero que deberíamos ver, es en que consiste la Persistencia.

Una posible definición podría ser esta:

Persistencia es la acción de preservar la información de un objeto de forma permanente (guardarlo), unido a la posibilidad de poder recuperar la información del mismo (leerlo) para que pueda ser nuevamente utilizado.

Dicho de otro modo, la persistencia nos permite guardar los datos de nuestras aplicaciones para poder utilizarlos cuando el usuario vuelva a ejecutar nuestra app.

Si desarrollamos una aplicación que no integre ningún sistema de persistencia, todos los datos que vayamos utilizando durante la ejecución de la misma simplemente se escribirán en memoria. ¿Qué quiere decir esto? Quiere decir que al estar únicamente almacenados en memoria y no en disco, en la siguiente ejecución de la app, todos estos datos se perderán.

En Desarrollo iOS existen varios sistemas de persistencia, diferentes “herramientas” que podemos utilizar como desarrolladores para guardar los datos de nuestras aplicaciones.

Aquí tienes algunos de ellos:

  • NSUserDefaults
  • Property Lists
  • NSFileManager
  • SQLite
  • Core Data

Nosotros, en este tutorial nos vamos a centrar en Core Data. Es probable que en próximos tutoriales veamos otros sistemas de persistencia que puedes utilizar.

5. ¿En qué consiste Core Data?

Core Data es un Framework de Persistencia desarrollado por Apple que nos permite simplificar la gestión del modelo de datos de nuestras aplicaciones.

Core Data suele utilizarse a través de una base de datos de tipo SQLite.

Pero el valor que realmente nos aporta, son una serie de herramientas que nos facilitan tanto la creación del modelo de nuestra app como la gestión posterior desde nuestro código.

Además, esta capa que envuelve nuestra base de datos SQLite nos permite que nosotros como desarrolladores no tengamos que trabajar directamente con sentencias SQL.

Una vez que sabemos en que consiste Core Data, veamos los conceptos más importantes que debes dominar.

6. Conceptos Fundamentales

NSManagedObjectModel

Es la representación de nuestro Modelo en disco.

NSManagedObject

El objeto NSManagedObject representa un objeto único almacenado en Core Data.

NSManagedObjectContext

NSManagedObjectContext representa algo parecido a un “espacio de memoria temporal” donde poder trabajar antes de guardar los datos.

Si piensas en como guardar un objeto con Core Data, podríamos decir que se trata de un proceso de dos pasos. Primero insertas el objeto en el managed object context y una vez que estás seguro puedes confirmar el guardado del objeto almacenándolo en disco.

Xcode genera automáticamente un managed object context en nuestras aplicaciones siempre que activemos la opción Use Core Data al crear el proyecto.

Concretamente el managed object context se almacena en una propiedad del appDelegate, por lo que cuando necesites utilizarlo lo primero que tendrás que hacer será crear una referencia al appDelegate de tu aplicación.

NSEntityDescription

El objeto NSEntityDescription describe una Entidad en Core Data. Una instancia de NSEntityDescription determina el nombre de la entidad, sus atributos y relaciones y la clase por la que está representada.

NSFetchRequest

NSFetchRequest es la clase responsable de recuperar datos de Core Data. Para recuperar estos datos, utilizaremos peticiones a las que especificaremos una serie de criterios. Estas peticiones son bastante potentes. Puedes utilizar fetchRequest para recuperar un conjunto de objetos que cumplan unas determinadas condiciones. Por ejemplo: “Dame todos los usuarios que se hayan dado de alta en el último mes y que hayan realizado alguna publicación en nuestra app”. NSFetchRequest utiliza calificadores para filtrar los resultados que queremos obtener.

5. Demostración práctica de la utilidad de Core Data

Como ya hemos comentado, en este tutorial vamos a trabajar con la aplicación que desarrollamos la semana pasada.

Así que para comenzar, puedes descargar ese proyecto desde aquí.

Una vez descargado, descomprímelo y ábrelo en Xcode.

Lo primero que debes comprobar, como en cualquier otro proyecto, es que compila correctamente (cmd + B).

Cuando hayas visto que compila sin problema, ejecuta la app (cmd + R).

Lo que quiero, es que veas tu mismo el problema que tiene esta aplicación, al no disponer de ningún sistema de persistencia.

Vamos a seguir unos pasos, que cualquier usuario podría llevar a cabo en su iPhone si estuviera utilizando nuestra aplicación.

Vamos a acceder a la multitarea y a cerrar nuestra aplicación desde allí.

Para ello, con la app ejecutándose, quiero que añadas 2 ó 3 tareas a nuestra aplicación. Ya sabes, para ello, utiliza el botón + y dales los nombres que quieras a las tareas y luego pulsa Guardar.

Una vez que estas tareas se hayan añadido a nuestra table view, pulsa dos veces seguidas la siguiente combinación de teclas (cmd +⇧+ H). Esta combinación simula que el usuario ha pulsado dos veces seguidas el botón Home de su iPhone y le permite acceder a la multitarea del dispositivo.

Una vez lanzada la multitarea, desplaza la ventana de nuestra aplicación para cerrarla. Esto producirá que la app finalice su ejecución.

A continuación, desde Xcode vuelve a lanzar la app (cmd + R). Al volver a ejecutar la aplicación, verás que el listado de tareas que habíamos creado ha desaparecido, nuestra table view vuelve a estar vacía.

Puedes ver el proceso completo en este video:

core data multitasking demo

 

Esto se debe a que no hemos implementado ningún sistema de persistencia y por tanto, todos nuestros datos se guardan únicamente en memoria. Y como bien sabes, la memoria se vacía al finalizar la ejecución de un programa.

De ahí, la importancia de ser capaz de utilizar sistemas de persistencia en tus aplicaciones iOS.

Ahora sí, vamos a ver los cambios que tendríamos que hacer en nuestro código para poder integrar Core Data.

7. Creando el Modelo de nuestra aplicación

Antes de entrar directamente a modificar el código de la app, vamos a crear el modelo de nuestra aplicación.

El primer paso será crear un Managed Object Model, que representa a nuestro modelo en Base de Datos.

Como, al crear nuestro proyecto, activamos la opción Core Data, Xcode automáticamente ha creado un fichero que representa nuestro modelo de datos y que se llama TaskManager.xcdatamodeld.

 

core data model data

 

Haz clic en TaskManager.xcdatamodeld para abrirlo. Verás el editor que Xcode te ofrece para crear nuestro modelo.

 

core data model editor

 

Este editor ofrece un gran número de opciones. Por ahora nos centraremos en crear una nueva Entidad.

Haz clic en el botón Add Entity situado en la parte inferior izquierda para crear una Entidad. Haz doble clic en la Entidad que acabas de crear para cambiarle el nombre.

Dale el nombre Task.

 

core data new entity

 

Le damos este nombre porque va a representar a cada una de las tareas que vamos a ir creando en nuestra aplicación.

Si no tienes claro a que nos referimos cuando hablamos de una Entidad, aquí tienes una serie de conceptos relacionados con Core Data que deberías de conocer:

  • Una Entidad es la representación de una Clase en Core Data. En una base de datos relacional correspondería a una Tabla. Por ejemplo, si quisiéramos crear una app como Instagram, podríamos tener una entidad llamada Usuario que representaría toda la información relativa a los usuarios de nuestra aplicación.
  • Un Atributo es un tipo de dato concreto, asociado a una Entidad específica. Por ejemplo, en el caso de que tuviéramos una entidad llamada Usuario, podríamos tener como atributos: username, email, name, etc. En una base de datos relacional, un atributo de una entidad se correspondería con un campo de una tabla.
  • Una Relación es un enlace entre diferentes entidades. Las relaciones pueden ser de 1-1 o de 1-N. Una relación 1-1 sería por ejemplo: Un usuario tiene una única imagen de perfil en Instagram. Una relación 1-N sería por ejemplo: Un usuario tiene asociadas varias publicaciones en Instagram.

Ahora que ya sabes lo que es un atributo, podemos crear uno nuevo en la entidad Task. Desde el Editor del Modelo de Xcode, selecciona la entidad Task y pulsa en el botón situado en la parte inferior derecha Add Attribute.

Dale el nombre name y cambia su tipo a String, pulsando en el desplegable situado bajo Type.

 

core data creating attribute

 

Como has visto en el menú desplegable, podemos especificar diferentes tipos para un atributo. Esto puede ser muy útil cuando crees modelos más completos.

8. Resumen Final

Hemos visto en este tutorial todos los conceptos que debes conocer para trabajar con Core Data. Además has visto el problema que tiene nuestra aplicación de gestión de tareas al no tener ningún sistema de persistencia implementado. También hemos creado el modelo de nuestra aplicación a través del editor que nos ofrece Xcode.

Este tutorial corresponde a la primera parte de un tutorial doble.

El lunes de la semana que viene publicaré la segunda parte de este tutorial y veremos las modificaciones de código que debemos realizar para poder añadir Core Data a nuestra aplicación.

Al terminar la segunda parte de este tutorial habrás visto de forma completa como añadir Core Data a cualquier aplicación.

Accede a la segunda parte del Tutorial a través del enlace en el siguiente apartado.

9. ¿Donde ir ahora?

Para acceder a la segunda parte del Tutorial de Introducción a Core Data entra aquí.

Puedes acceder a más tutoriales disponibles en EfectoApple aquí.

Si este artículo te ha parecido útil, me harías un gran favor compartiéndolo en tus redes sociales.

Como siempre, para cualquier duda, tienes los comentarios a tu disposición.

Recuerda, cada lunes un nuevo Tutorial sobre Desarrollo iOS.

Esto ha sido todo, gracias por leer EfectoApple.

Etiquetas:
5 Comentarios
  • Leonardo
    Publicado a las 15:16h, 11 diciembre Responder

    Hola, buen aporte con tus tutoriales, tengo una pregunta estoy iniciando en el mundo de Io´s se puede establecer el core data después de crear un nuevo proyecto sin haber tildado la opción core data, y cómo se haría para establecer una conexion con una base de datos remotamente en un servidor. mil gracias

  • Jonathan
    Publicado a las 01:53h, 06 mayo Responder

    olvidaste algo super importante, el UPDATE

  • Oscar
    Publicado a las 13:09h, 25 noviembre Responder

    La segunda parte aún no está disponible, al entrar al enlace sale la lista con todos los tutoriales en lugar de la segunda parte. Espero que la añada pronto.

  • Enrique Fuentes
    Publicado a las 00:37h, 03 junio Responder

    Buenas tardes, muy buen aporte, me gustaría saber como poder leer los datos de una base de datos ya cada en sql server

  • Andres Oviedo
    Publicado a las 00:42h, 12 septiembre Responder

    Tengo una duda, puedo crear un proyecto en xcode que inicialmente no seleccione la opcion de CoreData y despues agregar por mi cuenta el CoreData, en el mismo proyecto de xcode?

Escribe un comentario

Crea una aplicación iOS desde cero con mi Curso gratuito en videoRESERVAR PLAZA
+
10AppsIpad

Descarga las 10 Aplicaciones

Introduce tu Nombre y tu Email para recibir las Apps en tu Correo

Acabo de enviarte un email. Sigue las instrucciones para descargar las Aplicaciones. Puede que tengas que revisar tu buzón de correo no deseado. Gracias.