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, NSFetchRequestCré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
- Pile Core Data : configuration de NSPersistentContainer
- SwiftData @Model et ModelContext
- Relations et FetchDescriptor
- Migrations légères et synchronisation CloudKit