Core Data es como una herramienta de Apple que se usa en Mac OS y iOS. Ayuda a guardar datos de diferentes formas. Esto incluye ver los datos como si fueran un mapa de objetos. Así, se simplifica el uso de otras tecnologías, como SQL, que son más complicadas1.
Una ventaja de Core Data es que te permite ordenar y buscar datos de formas fáciles. Además, no hace falta usar SQL para hacer consultas. También, te ayuda a usar menos memoria gracias a algo llamado Faulting1.
Aspectos clave:
- Core Data es muy importante para guardar datos en aplicaciones de iOS1.
- Les da a los desarrolladores formas sencillas de guardar y encontrar datos sin preocuparse por bases de datos difíciles.
- Ayuda mucho desde la versión de iOS 10 con el inicio de Core Data23.
- El NSManagedObjectContext es esencial para guardar y buscar objetos en Core Data2.
- También da medios para manejar problemas cuando varios procesos quieren cambiar los mismos datos.
¿Qué es Core Data y por qué utilizarlo?
El framework Core Data de Apple ayuda a gestionar datos en apps de iOS y Mac. Hace fácil trabajar con datos y objetos a largo plazo. Core Data usa entidades y relaciones para estructurar la información.
Provee métodos para guardar, buscar y actualizar datos sin necesidad de SQL directamente. Así, se ahorra tiempo y esfuerzo en el desarrollo. 2
Las ventajas de Core Data incluyen:
- Organizar datos de manera sencilla
- Hacer consultas sin escribir SQL directamente
- Menos consumo de memoria gracias a Faulting
En conclusión, Core Data es esencial para apps que necesitan guardar y usar datos. Facilita mucho el trabajo con información compleja. 4
Componentes de Core Data
El Core Data Stack es una serie de herramientas. Actúan entre la app y su información guardada.5 Incluye el Modelo de objetos, el Coordinador para guardar datos y el Contexto para manejar los datos.5
Core Data Stack
El Persistent Store Coordinator maneja las conexiones a la base de datos.1 El NSManagedObjectModel define cómo se ven nuestros datos, como tablas y relaciones.1 Luego, el NSManagedObjectContext nos da acceso para crear, leer y actualizar la información de la base de datos.1 Y el Persistent Container es como una caja que guarda todo esto.5
Usamos el NSManagedObjectModel para estructurar datos y relaciones. También operamos con el NSManagedObjectContext. Junto con funciones como Fetch Request y Sort Descriptors, los usamos para buscar y organizar datos.1
Creando un Modelo de Datos con Core Data
Para hacer un modelo de datos con Core Data, comienza por planear las entidades y sus características. Las entidades son como tablas en una base de datos.1 Se les pueden agregar validaciones a esas características, como límites o valores por defecto. Igualmente, creamos relaciones entre las entidades, por ejemplo, la conexión entre un usuario y sus cuentas.
Esto nos ayuda a ver claramente cómo se relacionan los datos en nuestro sistema, haciendo más fácil trabajar con ellos.
Creando Entidades
En Core Data, las entidades equivalen a las tablas de una base de datos. Nos permiten definir qué tipo de información queremos guardar. Así, al diseñar nuestro modelo de datos, agregamos las entidades necesarias para nuestra app.1
Definiendo Propiedades y Validaciones
Cada entidad en Core Data tiene propiedades que la describen. Estas propiedades pueden ser de muchos tipos, como cadenas de texto o números.1 También añadimos validaciones para controlar la calidad de los datos. Podemos establecer reglas como límites y si la información es requerida o no.1
Estableciendo Relaciones entre Entidades
Una ventaja clave de Core Data es su capacidad para manejar relaciones. Podemos decir cómo se conectan las diversas entidades de nuestra app.1 Al hacer esto, elegimos reglas de borrado. Estas reglas determinan qué pasa con los datos cuando se borra una conexión.
| Característica | Descripción |
|---|---|
| Creación de Entidades | Las entidades en Core Data se parecen a las tablas de una base de datos. Ellas definen los objetos de nuestra app.1 |
| Definición de Propiedades | Cada entidad cuenta con propiedades para describir los objetos. Pueden ser de diferentes tipos, como texto o números.1 |
| Establecimiento de Validaciones | Es posible fijar reglas para asegurar la calidad de los datos, incluyendo límites y requerimientos de información.1 |
| Relaciones entre Entidades | Core Data facilita la creación de relaciones, con opciones como uno-a-uno o uno-a-muchos. También ofrece reglas para el borrado de datos.1 |
Core Data en iOS: Manejo de Persistencia de Datos
Core Data es esencial para guardar datos en aplicaciones iOS. Permite guardar y buscar información de forma sencilla. Esto ayuda a los desarrolladores a no preocuparse por detalles técnicos complicados.2
Este framework de Apple es perfecto para Mac OS e iOS. Ayuda a manejar objetos de datos de forma clara.1 Con Core Data, es fácil persistir datos y verlos como un grafo.1 También hace más simple agrupar y ordenar datos sin necesidad de escribir SQL.
| Componente del Core Data Stack | Descripción |
|---|---|
| Persistent Store Coordinator | Wrapper de la base de datos que administra las conexiones (lectura y escritura). |
| NSManagedObjectModel | Describe el esquema de la base de datos, es decir, las tablas y relaciones. |
| NSManagedObjectContext | Permite crear, solicitar y actualizar objetos de la base de datos. |
| Persistent Container | Encapsula todos los componentes anteriores. |
El Core Data Stack es clave entre la app y los datos.1 Al crear modelos de datos, se pueden incluir validaciones y relaciones útiles.1 Así, Core Data hace que guardar datos sea más fácil, lo que permite a los desarrolladores concentrarse en la app.1

Inicializando el Core Data Stack
Para trabajar con Core Data, primero debemos iniciar su stack. Esto significa crear las clases y los archivos de configuración necesarios.2 Desde iOS 10, Apple facilita esto con una nueva clase llamada NSPersistentContainer.3
Antes de iOS 10, el proceso era más complicado. Tenías que cargar el modelo desde una URL y crear otras piezas del stack.2
El Stack a partir de iOS 10
3 La clase NSPersistentContainer hace que inicializar Core Data stack sea mucho más fácil desde iOS 10. El código que crea Xcode la mayoría de las veces es suficiente. Aunque, para ciertas situaciones complicadas, como el manejo de varias operaciones a la vez, es mejor hacer un código a medida.
El Stack en iOS 9 y Anteriores
3 En versiones más viejas, Xcode ayuda activando Core Data con una simple marca al crear un proyecto nuevo. Al seleccionar «Use Core Data», Xcode prepara todo. Crea un archivo .xcdatamodeld para el modelo y añade funciones en la clase AppDelegate para empezar con Core Data.3 Este código inicial es útil en la mayoría de los casos. Pero, si necesitas manejar muchas tareas al mismo tiempo, hacer un código personalizado es mejor.
Guardando y Recuperando Datos con Core Data
Al iniciar el Core Data Stack, puedes guardar y recuperar datos. Para guardar datos, necesitas crear objetos administrados desde las entidades del modelo2. Estos objetos se ponen en un contexto de persistencia y luego guardas el contexto. Así, los cambios se guardan en la base de datos2. Para recuperar datos, usas Fetch Requests. Estos permiten buscar entidades y aplicar filtros, orden y paginación2.
El proceso de guardar y recuperar datos funciona a través de NSManagedObjectContext. Este sirve de puente entre la aplicación y la base de datos2.
Creando Objetos Administrados
Para empezar, creamos objetos administrados. Lo hacemos usando las entidades del core data. Estos objetos guardan los datos en la base de datos.
Insertando Objetos en el Contexto
Luego, hay que poner estos objetos en un contexto de persistencia. Así, podemos salvar y recuperar datos cuando sea necesario.
Guardando el Contexto
Tras añadir los objetos al contexto, es momento de salvarlo. Esto asegura que los cambios se mantengan en la base de datos. El contexto gestiona el proceso de salvar para mantener los datos seguros.
Recuperando Datos con Fetch Requests
Para ver datos guardados, usamos Fetch Requests. Con ellos, podemos buscar y ordenar la información como necesitemos. Esto nos da gran flexibilidad para mostrar los datos de la mejor forma.
Manejo de Concurrencia en Core Data
Al usar Concurrencia Core Data, es clave entender cómo manejar la concurrencia. Los contextos de persistencia son seguros para ser usados en múltiples hilos.2 Pero, evitar problemas como sincronizar cambios y gestionar conflictos es vital.2 Para ello, Core Data ofrece opciones como crear contextos secundarios y notificaciones.
5 El Core Data Stack cuenta con tres partes esenciales: el Modelo de objetos administrados, el Coordinador de almacenamiento persistente y el Contexto de objetos administrados.5 Un NSFetchRequest describe una búsqueda de objetos. Se usa para obtener las instancias de una entidad para tareas como mostrarlas en una vista de tabla.5

Buenas Prácticas con Core Data
Para sacar el máximo provecho de Core Data y no tener problemas, sigue algunas pautas. Esenciales para apps complicadas.
Separar Responsabilidades
Es importante no mezclar la lógica de negocio con la de guardar datos.1 Así, el código se hace más limpio, más fácil de usar y con menos errores en apps con muchos datos y dificultades de persistencia.
Utilizar Contextos Secundarios
Crear más de un contexto de persistencia es útil para ciertas tareas. Por ejemplo, para hacer actualizaciones en segundo plano. Luego, se usa el contexto principal para lo que ve el usuario.1 Así, trabajan mejor juntos y se divide el trabajo sin sobrecargar uno solo.
Optimizar el Uso de Memoria
Es bueno usar las funciones de Faulting y Fetch Limits de Core Data.1 Ayuda a no tener que cargar en memoria todos los datos de una vez. Esto es especialmente importante en apps con muchísimos datos.
Con estas indicaciones, podrás hacer un código más limpio y fácil de ampliar. Esta base es clave para que tus aplicaciones tengan éxito a largo plazo empleando Core Data.
Migraciones de Esquema en Core Data
A medida que una aplicación cambia, su modelo de datos en Core Data también puede cambiar.6 Se requieren migraciones de esquema para adaptarse a estos cambios. Core Data ayuda con este proceso,6 permitiendo definir cómo deben cambiarse los datos entre versiones. Estas actualizaciones pueden ser automáticas o a través de configuraciones manuales. Involucran cambios como agregar, quitar o editar entidades y sus relaciones.6 Hacer bien las migraciones de esquema en Core Data es clave para proteger los datos y lograr una actualización sin problemas.
Core Data tiene funciones útiles para manejar migraciones de esquema.6 Con opciones como «Lightweight Migration» y «Managed Object Model Versioning», los cambios entre versiones son más fáciles. Esto permite ajustar el modelo sin dañar los datos.6 Los cambios pueden incluir agregar, quitar o editar características de las entidades. Así, los datos siguen siendo coherentes a medida que la aplicación evoluciona.
Además, Xcode de Apple ofrece ayudas visuales para trabajar con Core Data.6 «Core Data Model Editor» permite hacer cambios al modelo sin código complicado.6 Esta herramienta hace que los cambios en el modelo sean más fáciles, evitando problemas técnicos y mejorando la experiencia para el usuario final.
En conclusión, las migraciones de esquema en Core Data son vitales para cuidar los datos.6 Core Data brinda ayudas para que los desarrolladores se enfoquen en mejorar la aplicación. Se desentienden de muchos detalles técnicos.
Depuración y Herramientas de Core Data
Core Data es muy útil para guardar datos en apps iOS.7 Xcode tiene un visualizador. Con él, puedes ver y cambiar datos fácilmente. También, hay herramientas extras para arreglar problemas más complicados.8 Las herramientas de depuración Core Data son esenciales para solucionar errores.
El visualizador de Core Data en Xcode es genial. Permite ver de cerca el modelo de datos y cómo se guardan los objetos.8 Te ayuda a entender cómo funcionan los datos en tu app. Así, puedes solucionar problemas más rápido.
Además de Xcode, hay herramientas de terceros como el Core Data Stack Debugger. Ayudan a ver mejor cómo funciona Core Data en tiempo real.8 Estas herramientas de depuración Core Data son ideales para mejorar el rendimiento de tu app.
Enlaces de origen
- https://angelmoralesk.medium.com/introducción-a-core-data-parte-1-2281eb85cab4
- https://mastermoviles.gitbook.io/persistencia-en-dispositivos-m-viles-ios/intro-2/3.2_stack
- https://ottocol.github.io/pddm/cap3/3.2_stack/
- https://appmaster.io/es/glossary/datos-basicos
- https://medium.com/@jael.ruvalcaba/objective-c-core-data-crud-create-read-update-delete-d3ba0e431456
- https://www.thoughtworks.com/content/dam/thoughtworks/documents/radar/2019/04/tr_technology_radar_vol_20_es.pdf
- https://cursos.frogamesformacion.com/pages/blog/aprender-a-crear-aplicaciones-para-iphone-en-50-dias
- https://apiumhub.com/es/tech-blog-barcelona/hoja-referencia-seguridad-aplicaciones-ios/


