Swift Data: El nuevo ORM de Apple para Swift
1. ¿Qué es y para qué sirve?
Swift Data es un framework ORM (Object-Relational Mapping) moderno y ligero presentado por Apple en la WWDC 2023. Está diseñado para gestionar datos persistentes en aplicaciones Swift compatibles con iOS 17+, macOS 14+, tvOS 17+ y watchOS 10+. Swift Data reemplaza al obsoleto Core Data, ofreciendo un enfoque más simple, declarativo y type-safe para la gestión de bases de datos.
¿Para qué sirve Swift Data? Principalmente, para simplificar drásticamente el código. En lugar de crear manualmente NSManagedObject, configurar contextos y escribir consultas complejas, el desarrollador describe el modelo de datos usando clases Swift normales y macros (@Model, @Attribute, @Relationship). Swift Data genera automáticamente toda la lógica interna necesaria: creación de tablas, gestión de cambios, seguimiento de dependencias y sincronización con la interfaz de usuario a través de SwiftUI.
La ventaja clave es su integración profunda con SwiftUI. Los cambios en los datos actualizan automáticamente la interfaz sin necesidad de llamar manualmente a objectWillChange.send() o recargar listas. Esto convierte a Swift Data en la opción ideal para nuevos proyectos en SwiftUI que requieran almacenamiento local de datos (listas de tareas, notas, configuraciones, caché).
2. Instalación
Swift Data forma parte de la biblioteca estándar de Apple a partir de iOS 17 y macOS 14. No requiere instalación adicional mediante gestores de paquetes (pip, npm, cargo). Para usarlo, basta con importar el framework en tu archivo Swift.
Importante: La versión mínima de despliegue (Deployment Target) de tu proyecto debe ser iOS 17.0 o macOS 14.0.
Comando para añadirlo al proyecto (a través de Xcode):
// Swift Data no requiere instalación. Simplemente impórtalo:
import SwiftData
Si usas Swift Package Manager (SPM) para gestionar dependencias, no necesitas añadir Swift Data como un paquete separado, ya que viene integrado en el SDK.
3. Inicio rápido — ejemplo mínimo funcional
Vamos a crear una aplicación simple para almacenar una lista de tareas (To-Do).
import SwiftUI
import SwiftData
// 1. Definimos el modelo de datos
@Model
final class TaskItem {
var title: String
var isCompleted: Bool
var createdAt: Date
init(title: String, isCompleted: Bool = false) {
self.title = title
self.isCompleted = isCompleted
self.createdAt = Date()
}
}
// 2. Configuramos el contenedor en la App
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(for: TaskItem.self) // Crea el contenedor automáticamente
}
}
// 3. Usamos los datos en la Vista
struct ContentView: View {
@Environment(\.modelContext) private var context
@Query private var tasks: [TaskItem]
var body: some View {
NavigationStack {
List {
ForEach(tasks) { task in
HStack {
Text(task.title)
Spacer()
if task.isCompleted {
Image(systemName: "checkmark")
}
}
}
.onDelete(perform: deleteTasks)
}
.navigationTitle("Tareas")
.toolbar {
ToolbarItem {
Button("Añadir") {
let newTask = TaskItem(title: "Nueva tarea \(tasks.count + 1)")
context.in También en la biblioteca
Flurl para C# (.NET): guía completa con ejemplos prácticos
Trabajo con imágenes en PHP: bibliotecas GD e Imagick
Trabajo con XML en TypeScript: bibliotecas, análisis y creación de documentos XML