¿Alguna vez te has preguntado cómo las aplicaciones de tu teléfono pueden almacenar y acceder a datos como notas, preferencias de usuario u otra información importante? Hay varias formas que los desarrolladores de apps suelen utilizar, especialmente en el desarrollo de apps para iOS, como User Default, Core Data, File System, SQLite, Keychain, Firebase Database o incluso Realm.
Se puede decir que todas estas formas son persistencia de datos. Sin embargo, ¿sabías que en la WWDC 2023, Apple anunció su última persistencia de datos? La respuesta es SwiftData, una nueva persistencia de datos diseñada para ser más fácil de escribir declarativamente con SwiftUI. Wow, interesante, ¿no? Hablemos de ello con más detalle.
SwiftData es el nuevo framework de Apple para persistir información de nuestra app. Este framework nos permite crear una base de datos dentro de nuestra app y poder guardar, hacer queries, actualizar y borrar información. Está completamente pensado para SwiftUI pero se puede desacoplar de la UI
Data Persistence
Antes de entrar en lo que es SwiftData, ¿estás familiarizado con el término persistencia de datos? Este término se refiere a cuando una aplicación tiene la capacidad de almacenar datos para que puedan ser recuperados y utilizados más tarde, incluso si la aplicación se abre o se cierra. Por lo tanto, la persistencia de datos garantiza que los datos permanezcan intactos y puedan utilizarse más adelante.
Entonces, ¿cuál es exactamente la diferencia entre cada persistencia de datos en el desarrollo de aplicaciones iOS? Vamos a discutir las diferencias en primer lugar.
Valores por defecto del usuario: Para almacenar datos sencillos como la configuración de la aplicación en forma de pares clave-valor. Limitado a tipos de datos pequeños y sencillos.
Core Data: Marco utilizado para gestionar datos complejos y cuenta con gestión de grafos de objetos y persistencia de datos. Adecuado para aplicaciones con estructuras de datos complejas.
Sistema de archivos: Almacena manualmente los datos en forma de archivos (por ejemplo, JSON, plist, imágenes) en el directorio de la aplicación. Flexible, pero no gestiona automáticamente los datos como Core Data.
SQLite: Una base de datos relacional ligera que permite consultas SQL. Adecuada para aplicaciones que requieren un control total sobre la estructura de la base de datos y las relaciones entre los datos.
Llavero: Para almacenar datos sensibles, como contraseñas y tokens de autenticación con alta seguridad. Los datos se almacenan cifrados.
Firebase Database: Una solución de base de datos en tiempo real basada en la nube adecuada para aplicaciones que necesitan sincronizar datos directamente entre dispositivos o usuarios.
Realm: Una base de datos móvil de alto rendimiento y fácil de usar similar a Core Data, pero más sencilla y rápida en términos de consulta y gestión de datos.
Existen muchos métodos para implementar la persistencia de datos en aplicaciones iOS. Por supuesto, cada uno de ellos tiene ventajas y desventajas. Puedes utilizarlos según tus necesidades y condiciones.
Por ejemplo, cuando quieres almacenar información sensible, Keychain puede ser una recomendación. Otro ejemplo es cuando quieres que tus datos sean accesibles a otros sistemas operativos, Firebase Database puede ser la elegida.
Core Data como persistencia de datos integrada en Xcode
También debes saber que implementar varios métodos de persistencia de datos es fácil de hacer, especialmente en el desarrollo de aplicaciones basadas en UIKit.
Por lo general, solo es necesario crear una clase independiente para gestionar el mecanismo mediante el cual se almacenan los datos para poder reutilizarlos. Por ejemplo, Core Data es la persistencia de datos por defecto en Xcode.
Parece bastante fácil implementar un Core Data en una aplicación UIKit. Sin embargo, es necesario saber que cada persistencia de datos tiene su propia forma de implementación. Por ejemplo, Core Data tiene un Core Data Stack que contiene una colección de objetos de framework como parte de la inicialización de Core Data.
Es necesario utilizar algunos de estos marcos de apoyo para que Core Data funcione de forma óptima. La complejidad aumenta porque Core Data está diseñado con un paradigma de programación imperativo.
Especialmente cuando se utiliza SwiftUI, tienes que ajustar algunas partes de tu código para que la integración con SwiftUI, que se basa en la programación declarativa, funcione bien. Como resultado, experimentarás muchos problemas al utilizar Core Data en aplicaciones SwiftUI. De hecho, no muchos desarrolladores han cambiado de Core Data a otros datos de persistencia, como Realm. Por lo tanto, Apple anunció un dato de persistencia adecuado para SwiftUI, SwiftData.
SwiftData, la nueva persistencia de datos de Apple
Después de que los desarrolladores de Apple tuvieran problemas con la implementación de Core Data en SwiftUI, Apple anunció SwiftData en la WWDC 2023. SwiftData es una persistencia de datos que facilita el desarrollo de aplicaciones iOS, especialmente SwiftUI, porque utiliza código declarativo. Puede consultar y filtrar utilizando código Swift e integrarlo fácilmente con SwiftUI.
Caracteríticas de SwiftData
Modelos con Swift
Puede convertir modelos Swift en modelos en SwiftData. Puedes hacerlo añadiendo @Model al principio de la clase del modelo. Sencillo, ¿verdad?
@Model
class Recipe {
@Attribute(.unique) var name: String
var summary: String?
var ingredients: [Ingredient]
}