0Pricing
Swift Academy · Lección

Stack de Core Data: configuración de NSPersistentContainer

Configure el contenedor persistente, el contexto y el coordinador en una app de SwiftUI.

Stack de Core Data: configuración de NSPersistentContainer es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

Descripción general de Core Data

Core Data es el framework de Apple para grafos de objetos y persistencia. Gestiona SQLite (u otros almacenes) mediante una API orientada a objetos.

import CoreData
// Key classes: NSPersistentContainer, NSManagedObjectContext
// NSManagedObject, NSFetchRequest

Creación de NSPersistentContainer

Inicialice NSPersistentContainer con el nombre de su modelo .xcdatamodeld y cargue los almacenes persistentes.

let container = NSPersistentContainer(name: "MyModel")
container.loadPersistentStores { desc, error in
  if let error { fatalError("Core Data failed: \(error)") }
}

Patrón del controlador de persistencia

Envuelva el contenedor en una estructura PersistenceController singleton (o inyectable) para acceder a él de forma clara desde toda la app.

struct PersistenceController {
  static let shared = PersistenceController()
  let container: NSPersistentContainer
  init() {
    container = NSPersistentContainer(name: "MyModel")
    container.loadPersistentStores { _, error in
      if let error { fatalError("\(error)") }
    }
  }
}

viewContext y backgroundContext

viewContext es el contexto del hilo principal para la interfaz de usuario. Use newBackgroundContext() para operaciones pesadas.

let viewCtx = PersistenceController.shared.container.viewContext
let bgCtx = PersistenceController.shared.container.newBackgroundContext()

Creación de objetos gestionados

Inserte objetos nuevos mediante NSEntityDescription.insertNewObject o el inicializador de la clase generada.

let item = Item(context: viewCtx)
item.timestamp = Date()
try? viewCtx.save()

Búsqueda de objetos

Use NSFetchRequest para consultar objetos de Core Data con predicados y descriptores de ordenación.

let request: NSFetchRequest<Item> = Item.fetchRequest()
request.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: false)]
let items = try? viewCtx.fetch(request)

Guardado del contexto

Llame siempre a context.save() para persistir los cambios. En el código de producción, envuelva la operación en un bloque do-catch.

do {
  try viewCtx.save()
} catch {
  print("Save failed: \(error)")
  viewCtx.rollback()
}

Integración con SwiftUI mediante @FetchRequest

Use @FetchRequest en las vistas de SwiftUI para actualizar automáticamente la interfaz cuando cambien los datos de Core Data.

struct ItemList: View {
  @FetchRequest(
    sortDescriptors: [SortDescriptor(\Item.timestamp, order: .reverse)]
  ) var items: FetchedResults<Item>
  var body: some View {
    List(items) { Text($0.timestamp!.formatted()) }
  }
}

Inyección de viewContext en SwiftUI

Pase viewContext mediante el entorno de SwiftUI para que las vistas puedan leer y escribir en Core Data.

@main
struct MyApp: App {
  let persistence = PersistenceController.shared
  var body: some Scene {
    WindowGroup {
      ContentView()
        .environment(\.managedObjectContext, persistence.container.viewContext)
    }
  }
}

Eliminación de objetos

Llame a context.delete(object) y, después, guarde para eliminar un objeto de forma permanente.

viewCtx.delete(item)
try? viewCtx.save()

Almacén en memoria para pruebas

Use un almacén en memoria para evitar acceder al disco durante las pruebas unitarias.

let desc = NSPersistentStoreDescription()
desc.type = NSInMemoryStoreType
container.persistentStoreDescriptions = [desc]
container.loadPersistentStores { _, _ in }

Comprobación rápida

¿Qué contexto de NSPersistentContainer debe utilizar para las lecturas y escrituras de Core Data impulsadas por la interfaz de usuario?

Repaso de la lección

Configure Core Data con NSPersistentContainer, cargue los almacenes y envuélvalo en un PersistenceController. Use viewContext en el hilo principal y newBackgroundContext() para operaciones pesadas. Integre Core Data con SwiftUI mediante @FetchRequest y la clave de entorno del contexto de objetos gestionados.

Preguntas frecuentes

¿La lección «Stack de Core Data: configuración de NSPersistentContainer» es gratis?

Sí — el texto completo de «Stack de Core Data: configuración de NSPersistentContainer» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Stack de Core Data: configuración de NSPersistentContainer»?

Configure el contenedor persistente, el contexto y el coordinador en una app de SwiftUI. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Stack de Core Data: configuración de NSPersistentContainer»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Stack de Core Data: configuración de NSPersistentContainer
  2. @Model y ModelContext de SwiftData
  3. Relaciones y descriptores de búsqueda
  4. Migraciones ligeras y sincronización con CloudKit
← Volver a Swift Academy