Core Data en SwiftUI Simple Ejemplo
Tags: swifui, beginners, programming, tutorial
Published: 2022-07-28 10:59:00

Este es un ejemplo muy simple de cómo agregar Core Data a un proyecto en SwiftUI.

Para agregar Core Data a un proyecto necesitamos seguir los siguientes pasos:

1 Crear un Data model, primero insertamos un archivo tipo Data Model :


![Create Core Data Model](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fiw8iavpfg1xr2cjumkz.png)

Luego le asignamos un nombre al archivo, en esta caso “ModelApp”  y presionando el botón “Add Entity” creamos una entidad (objeto dentro del modelo). 


![Add Entity](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q1u78yrysabnsncc08a7.png)


Asignamos un nombre a nuestra entidad, en este caso “Productos” y propiedades de la entidad con su nombre y tipo de data:


![Productos](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cbt8gazmnl08cqsopz9m.png)


2 Creamos la clase “DataController” encargada de administrar Core Data dentro de nuestra aplicación. Para esto insertamos el archivo “DataController.swift” y escribimos lo siguiente: 


Primero importamos CoreData al archivo 
Luego definimos una clase “Data Controller” del tipo “ObservableObject”, esto es muy importante ya que así lo podremos insertar dentro del proyecto.



![clase Data Controller](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jqrq78n2xp0jh1y6a6fo.png)


3 Agregamos el data controller a nuestro proyecto.
Para esto nos vamos al archivo inicial de nuestro proyecto en este caso abro el archivo: “CoreDataEjemploApp.swift”

Primero Creo una variable del tipo  @StateObject, llamada “dataController” que es del tipo “DataController()” (la  clase que habíamos definido anteriormente)


![Insert Data Controller](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sj4576kx1rvg3q83fbfi.png)


Luego agregamos a la View inicial en este caso “ContentView” la variable “dataController” como una variable del tipo “environment” es y esta estará disponible para nuestra View y las restantes Views a través del método viewContext() .

Ya tenemos configurado Data Core en nuestro proyecto, ahora vamos a leer y agregar datos que guardaremos en forma persistente usando nuestro modelo.

4. Leer y grabar datos en Core Data
4.1 Para leer datos a Core Data en el archivo ContentView.Swift ,  escribimos la siguiente línea:


![Fetch Data](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u14jqjem1cjjjdlrxdhg.png)


Donde @Fetch request es la propiedad que nos permite crear una variable llamada  “products” que es el resultado de traer data desde la entidad “Producto” bajo un cierto criterio en este caso pedimos toda la data al usar "sortDescriptors: []".


4.2.Para grabar datos a Core Data en el archivo ContentView.Swift ,  escribimos la siguiente línea:


![Write data](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kexer117i7zuda87z21v.png)


Luego creamos un listView para mostrar los datos que hemos leído desde Core Data.


![List View](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kpatmbec3qfgot5av630.png)

además de un botón “Add” que agrega data a nuestro container. 

![Button Add](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0m1p0bipwrt6s0k1dlhz.png)

Finalmente usamos try para grabar la información que hemos generado: 

![Try for save](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6ttu9p1d2arpvprhl8di.png)


El archivo final quedó así:


![Archivo final](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rms82v27pv7gy462t80m.png) 


Probamos hacer click al botón “Add” y llenaremos de data de forma aleatoria con diferentes nombres para nuestros productos, obtendremos una pantalla así: 


![Pantalla simulador](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/neib3rwhdqqrt3w2klb3.png)


Puedes detener la aplicación y volverla a cargar y verás que la data ha sido grabada en forma permanente.

Conclusión:

Este es un proyecto muy simple para visualizar cómo funciona Core Data en SwiftUI, espero haberte motivado a investigar más y utilizar esta excelente herramienta de que disponemos para guardar data en forma permanente en nuestras aplicaciones, con la gran ventaja de no tener que agregar librerías externas y no hacer crecer el tamaño de nuestra App en forma excesiva. 

Este es mi primer tutorial, espero seguir compartiendo proyectos para ilustrar y hacer más simple la comprensión de SwiftUI. 

El proyecto lo puedes descargar [aqui](https://github.com/AlvarArias/CoreDataEjemplo.git)