0Pricing
Swift Academy · Lektion

SwiftData @Model und ModelContext

Definieren Sie Modelle mit dem @Model-Makro und führen Sie CRUD über ModelContext aus.

SwiftData @Model und ModelContext ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Einführung in SwiftData

SwiftData (iOS 17+) ist Apples modernes, natives Swift-Persistenz-Framework, das intern auf Core Data aufbaut.

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

@Model-Makro

Annotieren Sie eine Klasse mit @Model, um sie zu einem persistierbaren SwiftData-Modell zu machen. Eigenschaften werden automatisch zu gespeicherten Attributen.

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

ModelContainer einrichten

Erstellen Sie einen ModelContainer mit Ihren Modelltypen und injizieren Sie ihn in die SwiftUI-Umgebung.

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

ModelContext in Views

Verwenden Sie @Environment(\.modelContext), um in einer SwiftUI-View auf den Modellkontext zuzugreifen.

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

Einfügen und Löschen

Rufen Sie context.insert auf, um Modelle hinzuzufügen, und context.delete, um sie zu entfernen. Änderungen werden standardmäßig automatisch gespeichert.

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

@Query zum Abrufen

@Query in SwiftUI-Views ruft Daten automatisch ab und aktualisiert die View, wenn sich die zugrunde liegenden Daten ändern.

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

Mit Prädikaten filtern

Übergeben Sie ein #Predicate an @Query, um Ergebnisse deklarativ zu filtern.

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

Manuell speichern

Rufen Sie try context.save() auf, wenn Sie explizit steuern müssen, wann Änderungen persistiert werden.

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

@Attribute zur Anpassung

Verwenden Sie @Attribute für Eigenschaften, um das Persistenzverhalten anzupassen (z. B. Eindeutigkeit oder externen Speicher).

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

@Transient-Eigenschaften

Markieren Sie Eigenschaften mit @Transient, um sie von der Persistenz auszuschließen.

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

ModelContainer konfigurieren

Konfigurieren Sie den Container mit einem expliziten Schema und einem Migrationsplan für versionierte Modelle.

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

Kurze Überprüfung

Welcher SwiftUI-Property-Wrapper ruft SwiftData-Modelle automatisch ab und aktualisiert die View, wenn sich Daten ändern?

Zusammenfassung der Lektion

Annotieren Sie Klassen mit @Model, um sie persistierbar zu machen. Richten Sie den ModelContainer auf App-Ebene ein. Lesen und schreiben Sie über @Environment(\.modelContext). Rufen Sie Daten reaktiv mit @Query ab. Filtern Sie mit #Predicate.

Häufig gestellte Fragen

Ist die Lektion „SwiftData @Model und ModelContext“ kostenlos?

Ja — der vollständige Text von „SwiftData @Model und ModelContext“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „SwiftData @Model und ModelContext“?

Definieren Sie Modelle mit dem @Model-Makro und führen Sie CRUD über ModelContext aus. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „SwiftData @Model und ModelContext“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Core-Data-Stack: NSPersistentContainer einrichten
  2. SwiftData @Model und ModelContext
  3. Beziehungen und Fetch Descriptors
  4. Einfache Migrationen und CloudKit-Synchronisierung
← Zurück zu Swift Academy