Core Data (CRUD) con Swift 4.2 para principiantes
Core Data es un marco de gráficos de objetos y persistencia proporcionado por Apple en los sistemas operativos macOS e iOS. Se introdujo en Mac OS X 10.4 Tiger e iOS con iPhone SDK 3.0. Permite que los datos organizados por el modelo de atributos de entidad relacional se serialicen en almacenes XML, binarios o SQLite.
los Desarrolladores del Núcleo de Datos a menudo son confundidos por las diferencias entre SQLite y Datos Básicos. Si te preguntas si necesitas datos SQLite o Core, entonces estás haciendo la pregunta equivocada. Recuerde que Core Data no es una base de datos.
SQLite:
- Tener la función de Restricciones de datos.
- Funciona con datos almacenados en disco.
- Puede Soltar tablas y Editar datos sin cargarlos en memoria.
- Lento en comparación con los datos básicos.
Datos básicos:
- No tiene restricciones de datos, si es necesario, debe implementarse mediante lógica de negocio.
- Funciona en memoria.(los datos deben cargarse desde el disco a la memoria)
- Es necesario cargar datos completos si necesitamos soltar la tabla o actualizar.
- Rápido en términos de creación de registros.(ahorrarlos puede llevar mucho tiempo)
Además, aparte de SQLite como base de datos de back-end, puede usar el formato XML o binario para almacenar datos en el disco.
Limitaciones de datos básicos
Aunque los datos básicos son un marco fantástico, hay varios inconvenientes. Estos inconvenientes están directamente relacionados con la naturaleza del marco y su funcionamiento.
Core Data solo puede hacer su magia porque mantiene el gráfico de objetos que administra en memoria. Esto significa que solo puede funcionar en registros una vez que estén en memoria. Esto es muy diferente de realizar una consulta SQL en una base de datos. Si desea eliminar miles de registros, Core Data primero debe cargar cada registro en la memoria. No hace falta decir que esto se traduce en problemas de memoria y rendimiento si se hace incorrectamente.
Otra limitación importante es el modelo de enhebrado de datos Centrales. El framework espera ejecutarse en un solo subproceso. Afortunadamente, los datos Centrales han evolucionado drásticamente a lo largo de los años y el marco ha implementado varias soluciones para que trabajar con datos Centrales en un entorno de múltiples subprocesos sea más seguro y fácil.
Para aplicaciones que necesitan administrar un gráfico de objetos complejo, Core Data es una gran opción. Si solo necesita almacenar un puñado de objetos no relacionados, entonces puede ser mejor con una solución ligera o el sistema de valores predeterminados del usuario.
Demostración de Datos Básicos (Crear, Recuperar, Actualizar y Eliminar)
Para demostrar los conceptos básicos de los Datos Básicos, vamos a crear una aplicación iOS de vista única con el módulo de datos básicos seleccionado.
Primero, creemos un nuevo proyecto y seleccionemos «Use Core Data». Aunque puede agregar ese marco para su proyecto existente, es más fácil agregarlo desde ese lugar, ya que todo estará conectado para usted.Una vez creado el proyecto, verás un archivo como CoreDataTest.añadido xcdatamodeld.
Al hacer clic en él, verá una herramienta que le permite configurar entidades que representan modelos de datos. Puede definir algunas cosas para cada entidad allí, pero para nosotros los atributos y las Relaciones serán los más importantes.
Ahora que hemos creado un proyecto de demostración con los Datos de los núcleos de apoyo. Hay dos cambios notables en esta plantilla de Xcode que podemos observar fácilmente, que son
- El nuevo archivo CoreDataCRUD.xcdatamodeld
- La AppDelegate.archivo swift con código de Pila de Datos Principales
Pila de datos principales
El código de pila de datos principales dentro de AppDelegate.swift tiene documentación clara en forma de comentarios, pero en resumen, configura el contenedor persistente y guarda los datos si hay algún cambio. Como AppDelegate es el primer archivo que se ejecuta tan pronto como se inicia la aplicación, podemos guardar y recuperar el contexto de la pila de datos del núcleo.
Ahora, hemos modelado nuestros datos en la entidad de usuario. Es hora de agregar algunos registros y guardarlos en el CoreData
Comience con importar CoreData a nuestro controlador de vista.swift
Crear registros en Datos básicos
El proceso de agregar registros a Datos básicos tiene las siguientes tareas
- Consulte persistentContainer desde appdelegate
- Crear el contexto desde persistentContainer
- Crear una entidad con Usuario
- Crear un nuevo registro con esta Entidad de usuario
- Establecer valores para los registros de cada clave
Recuperar datos
El proceso de recuperar los datos guardados es muy fácil también. Tiene la siguiente tarea
- Prepare la solicitud de tipo NSFetchRequest para la entidad (Usuario en nuestro ejemplo)
- si es necesario use predicado para datos de filtro
- Obtenga el resultado del contexto en forma de matriz de
- Itere a través de una matriz para obtener el valor de la clave específica
datos de nuestra entidad de Usuarios utilizando el siguiente código.
Actualizar datos
Para actualizar el registro primero tenemos que obtener / Recuperar datos con el predicado igual que el proceso de recuperación de datos anterior. Luego, a continuación, algunos pasos a seguir
- Prepare la solicitud con predicado para la entidad (Usuario en nuestro ejemplo)
- Obtenga el registro y Establezca un nuevo valor con clave
- Y El último contexto de guardado lo mismo que crear datos.
Eliminar Datos
Para borrar el registro primero tenemos que encontrar el objeto que queremos eliminar por fetchRequest. a continuación, siga algunos pasos para eliminar registro
- Prepare la solicitud con predicado para la entidad (Usuario en nuestro ejemplo)
- Obtener registro y que queremos eliminar
- Y crear contexto.eliminar(objeto) de la llamada (ref imagen que adjuntamos a continuación)
Bueno, esto no es suficiente para los datos centrales, hay muchas cosas complejas que podemos hacer con los cambios de datos de seguimiento de datos centrales, agregando Predicados y relaciones complejas de bases de datos. A medida que usas más Datos básicos, las cosas se vuelven más complejas.