0Pricing
Swift Academy · Leçon

Pile Core Data : configuration de NSPersistentContainer

Configurer le conteneur persistant, le contexte et le coordinateur dans une application SwiftUI.

Pile Core Data : configuration de NSPersistentContainer est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

Présentation de Core Data

Core Data est le framework de graphe d’objets et de persistance d’Apple. Il gère SQLite (ou d’autres stockages) au moyen d’une API orientée objet.

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

Création de NSPersistentContainer

Initialisez NSPersistentContainer avec le nom de votre modèle .xcdatamodeld, puis chargez les stockages persistants.

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

Modèle du contrôleur de persistance

Encapsulez le conteneur dans une structure singleton (ou injectable) PersistenceController pour y accéder proprement depuis toute l’application.

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

viewContext et backgroundContext

viewContext est le contexte utilisé par le thread principal pour l’interface. Utilisez newBackgroundContext() pour les opérations lourdes.

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

Création d’objets gérés

Insérez de nouveaux objets à l’aide de NSEntityDescription.insertNewObject ou de l’initialiseur de la classe générée.

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

Récupération d’objets

Utilisez NSFetchRequest pour interroger les objets Core Data avec des prédicats et des descripteurs de tri.

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

Enregistrement du contexte

Appelez toujours context.save() pour conserver les modifications. Entourez cet appel d’un bloc do-catch dans le code destiné à la production.

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

Intégration à SwiftUI avec @FetchRequest

Utilisez @FetchRequest dans les vues SwiftUI pour mettre automatiquement l’interface à jour lorsque Core Data est modifié.

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

Injection de viewContext dans SwiftUI

Transmettez viewContext via l’environnement SwiftUI afin que les vues puissent lire et écrire dans Core Data.

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

Suppression d’objets

Appelez context.delete(object), puis enregistrez le contexte pour supprimer définitivement un objet.

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

Stockage en mémoire pour les tests

Utilisez un stockage en mémoire pour éviter d’accéder au disque pendant les tests unitaires.

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

Vérification rapide

Quel contexte de NSPersistentContainer devez-vous utiliser pour les lectures et écritures de Core Data pilotées par l’interface ?

Récapitulatif de la leçon

Configurez Core Data avec NSPersistentContainer, chargez les stockages et encapsulez le tout dans un PersistenceController. Utilisez viewContext sur le thread principal et newBackgroundContext() pour les opérations lourdes. Intégrez Core Data à SwiftUI via @FetchRequest et la clé d’environnement du contexte d’objets gérés.

Questions Fréquemment Posées

La leçon « Pile Core Data : configuration de NSPersistentContainer » est-elle gratuite ?

Oui — le texte complet de « Pile Core Data : configuration de NSPersistentContainer » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Pile Core Data : configuration de NSPersistentContainer » ?

Configurer le conteneur persistant, le contexte et le coordinateur dans une application SwiftUI. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Pile Core Data : configuration de NSPersistentContainer » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Pile Core Data : configuration de NSPersistentContainer
  2. SwiftData @Model et ModelContext
  3. Relations et FetchDescriptor
  4. Migrations légères et synchronisation CloudKit
← Retour à Swift Academy