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