0Pricing
Swift Academy · Leçon

SwiftData @Model et ModelContext

Définir des modèles avec la macro @Model et effectuer des opérations CRUD via ModelContext.

SwiftData @Model et ModelContext est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.

Introduction à SwiftData

SwiftData (iOS 17 ou version ultérieure) est le framework de persistance moderne et natif de Swift proposé par Apple, construit en interne sur Core Data.

import SwiftData
// Main concepts: @Model, ModelContainer, ModelContext

Macro @Model

Annotez une classe avec @Model pour en faire un modèle SwiftData persistant. Les propriétés deviennent automatiquement des attributs stockés.

@Model
class Item {
  var name: String
  var createdAt: Date
  init(name: String) {
    self.name = name
    self.createdAt = Date()
  }
}

Configuration de ModelContainer

Créez un ModelContainer avec vos types de modèles, puis injectez-le dans l’environnement SwiftUI.

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup {
      ContentView()
    }
    .modelContainer(for: Item.self)
  }
}

ModelContext dans les vues

Utilisez @Environment(\.modelContext) pour accéder au contexte du modèle dans une vue SwiftUI.

struct AddItemView: View {
  @Environment(\.modelContext) private var context
  func addItem() {
    context.insert(Item(name: "New Item"))
  }
}

Insertion et suppression

Appelez context.insert pour ajouter des modèles et context.delete pour les supprimer. Les modifications sont enregistrées automatiquement par défaut.

let item = Item(name: "Coffee")
context.insert(item)   // add
context.delete(item)   // remove
// Auto-saved on next run loop

@Query pour récupérer des données

Dans les vues SwiftUI, @Query récupère automatiquement les modèles et actualise la vue lorsque les données sous-jacentes changent.

struct ItemList: View {
  @Query(sort: \Item.createdAt, order: .reverse) var items: [Item]
  var body: some View {
    List(items) { item in Text(item.name) }
  }
}

Filtrage avec des prédicats

Transmettez un #Predicate à @Query pour filtrer les résultats de manière déclarative.

@Query(filter: #Predicate<Item> { $0.name.contains("Swift") })
var swiftItems: [Item]

Enregistrement manuel

Appelez try context.save() lorsque vous avez besoin de contrôler explicitement le moment où les modifications sont enregistrées.

do {
  try context.save()
} catch {
  print("Save error: \(error)")
}

@Attribute pour la personnalisation

Utilisez @Attribute sur les propriétés pour personnaliser le comportement de persistance (par exemple, l’unicité et le stockage externe).

@Model
class User {
  @Attribute(.unique) var email: String
  @Attribute(.externalStorage) var avatar: Data?
  init(email: String) { self.email = email }
}

Propriétés @Transient

Marquez les propriétés avec @Transient pour les exclure de la persistance.

@Model
class Session {
  var token: String
  @Transient var isExpired: Bool = false
  init(token: String) { self.token = token }
}

Configuration de ModelContainer

Configurez le conteneur avec un schéma explicite et un plan de migration pour les modèles versionnés.

let schema = Schema([Item.self, User.self])
let config = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)
let container = try ModelContainer(for: schema, configurations: config)

Vérification rapide

Quelle enveloppe de propriété SwiftUI récupère automatiquement les modèles SwiftData et actualise la vue lorsque les données changent ?

Récapitulatif de la leçon

Annotez les classes avec @Model pour les rendre persistantes. Configurez ModelContainer au niveau de l’application. Lisez et écrivez via @Environment(\.modelContext). Récupérez les données de manière réactive avec @Query. Filtrez-les avec #Predicate.

Questions Fréquemment Posées

La leçon « SwiftData @Model et ModelContext » est-elle gratuite ?

Oui — le texte complet de « SwiftData @Model et ModelContext » 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 « SwiftData @Model et ModelContext » ?

Définir des modèles avec la macro @Model et effectuer des opérations CRUD via ModelContext. 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 2 sur 4.

Combien de temps prend la leçon « SwiftData @Model et ModelContext » ?

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