Contenido del curso
Estructura de un Proyecto con MVVM
Operaciones CRUD en un proyecto con MVVM
- 11

Función addTodo con Core Data en SwiftUI
19:47 min - 12

Funcionalidades básicas para gestionar tareas en SwiftUI
14:30 min - 13

Listado y detalle de notas en SwiftUI
22:35 min - 14

Editar todos con SwiftUI y Core Data
13:41 min - 15

Archivar tareas en SwiftUI con Core Data
15:28 min - 16

Cómo desarchivar tareas con unarchiveTodo
03:25 min - 17

Eliminar un to do definitivamente con Core Data
04:15 min - 18

Marcar tareas completadas en SwiftUI
20:50 min - 19

Creación de Vistas Amigables en SwiftUI para Aplicaciones de Tareas
19:52 min
Clean Architecture
- 20

Qué es Clean Architecture y por qué supera a MVVM
05:52 min - 21

Estructura y Ventajas de la Clean Architecture
03:47 min - 22

Estructura de proyecto iOS con Clean Architecture
06:01 min - 23

Mapeo de JSON a structs Swift con Codable
09:10 min - 24

Capa de datos con Clean Architecture en Swift
30:54 min - 25

Casos de uso en la capa de dominio Swift
09:35 min - 26

Capa de presentación con MVVM en SwiftUI
15:37 min - 27

Navegación y detalle con Clean Architecture en SwiftUI
21:54 min
MVVM y Clean Architecture
Modelo de datos con Core Data en Swift
Resumen
Si estás construyendo una app de notas en Swift y necesitas que los datos persistan aunque no haya internet, Core Data es el framework que resuelve ese reto. Aquí verás cómo crear el modelo de datos, definir una entidad y generar las subclases necesarias para mapear tus objetos al almacenamiento local en iOS.
¿Qué es Core Data y por qué usarlo en una app de notas?
Core Data es el framework de Apple que permite almacenar datos estructurados dentro de una aplicación y acceder a ellos en modo offline. En el caso de una to do list, cada nota necesita guardarse con sus atributos (título, fecha, estado) para que el usuario los recupere aunque cierre la app.
¿Qué hace Core Data exactamente? Administra la persistencia local de objetos estructurados en iOS. Tú defines entidades parecidas a tablas y Core Data se encarga de leer, guardar y mapear esos datos sin que escribas SQL.
¿Cómo crear el modelo de datos en Xcode?
El primer paso es generar el archivo donde vivirá la estructura. En Xcode, haz clic derecho sobre la carpeta principal del proyecto y selecciona New File from Template. En el buscador escribe model y elige la opción Data Model [01:00]. Asígnale un nombre, por ejemplo Model Data, y confirma la creación.
Con ese archivo listo, ya tienes el contenedor donde definirás cada entidad de tu app.
¿Qué es una entidad en Core Data?
Una entidad funciona como una tabla: agrupa atributos que describen un objeto. Para esta app de notas, la entidad debe replicar exactamente los mismos parámetros que ya existen en el objeto Item del proyecto. Haz clic en Add Entity y nómbrala Todo Entity [01:35].
¿Qué atributos debe tener la entidad Todo Entity?
Los atributos deben coincidir uno a uno con el modelo original. Si cambias un nombre, el mapeo falla. Estos son los seis que necesitas agregar:
- isArchived de tipo Boolean.
- isComplete de tipo Boolean.
- date de tipo Date.
- notes de tipo String.
- title de tipo String.
- identifier de tipo String.
Cada atributo se agrega manualmente desde el editor de la entidad, así que cuida la escritura. Un typo aquí significa errores de compilación más adelante.
¿Cómo configurar el módulo y el Code Gen de la entidad?
Antes de generar código, hay dos ajustes obligatorios en el panel derecho de Xcode. Selecciona la entidad Todo Entity y revisa estas propiedades:
- En Module, cambia Global Namespace por Current Product Module. Así la entidad queda enfocada en el módulo actual y evitas conflictos de namespace.
- En Codegen, selecciona Manual/None [03:30]. Esto desactiva la autogeneración de código y te permite controlar las subclases tú mismo.
¿Por qué usar Codegen Manual en lugar de automático? Porque te da control total sobre las subclases. Con autogeneración, Xcode crea archivos ocultos que no puedes editar. En modo manual generas archivos visibles que puedes extender con lógica propia.
¿Cómo generar las subclases NSManagedObject?
Las subclases son las que conectan tu entidad de Core Data con código Swift real. Con la entidad seleccionada, ve al menú superior Editor y elige la opción Create NSManagedObject Subclass [04:05].
El asistente te pedirá tres cosas en orden:
- Seleccionar el modelo de datos del que vas a generar subclases.
- Marcar la entidad específica, en este caso Todo Entity.
- Indicar la carpeta de destino, por ejemplo el directorio Models dentro de la carpeta del curso.
Al confirmar, Xcode genera dos archivos Swift: TodoEntity+CoreDataClass y TodoEntity+CoreDataProperties.
¿Qué hace cada archivo generado?
Cada archivo cumple un rol distinto en el mapeo entre Core Data y tu código:
- TodoEntity+CoreDataClass define la estructura base de la entidad como subclase de NSManagedObject. Aquí vivirá la lógica adicional si decides extenderla.
- TodoEntity+CoreDataProperties declara las propiedades del objeto usando una extension de la clase principal. Incluye la función que devuelve el nombre de la entidad y cada atributo decorado con
@NSManaged.
¿Para qué sirve la anotación @NSManaged?
La anotación @NSManaged le indica al compilador que esa propiedad la administra Core Data directamente, no tú. Gracias a ella, atributos como isArchived, isComplete, date, notes, title e identifier quedan vinculados al sistema de persistencia sin código adicional.
Es decir, no tienes que escribir getters ni setters: Core Data los inyecta en tiempo de ejecución.
Lo que ya tienes listo para almacenar notas localmente
Con estos pasos cubriste la base que Core Data exige para persistir datos en una app Swift:
- Un modelo de datos llamado Model Data.
- Una entidad Todo Entity con seis atributos tipados.
- Configuración de módulo en Current Product Module y Codegen Manual.
- Dos subclases generadas en la carpeta Models listas para usarse.
La estructura de almacenamiento ya está en su lugar. El siguiente paso lógico es construir las vistas que leerán y escribirán sobre esta entidad. ¿Has trabajado antes con Core Data o prefieres alternativas como SwiftData? Cuéntalo en los comentarios.