Swift Data para Swift: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

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                    

Recommendations