Swift Data: Der neue ORM von Apple für Swift
1. Was ist Swift Data und warum braucht man es?
Swift Data ist ein modernes, leichtgewichtiges ORM-Framework (Object-Relational Mapping), das Apple auf der WWDC 2023 vorgestellt hat. Es wurde entwickelt, um persistente Daten in Swift-Apps zu verwalten, die iOS 17+, macOS 14+, tvOS 17+ und watchOS 10+ unterstützen. Swift Data löst das veraltete Core Data ab und bietet einen einfacheren, deklarativen und typsicheren Ansatz für die Datenbankverwaltung.
Warum Swift Data? In erster Linie, um den Code erheblich zu vereinfachen. Anstatt manuell NSManagedObject zu erstellen, Kontexte zu konfigurieren und komplexe Abfragen zu schreiben, beschreibt der Entwickler das Datenmodell mit normalen Swift-Klassen und Makros (@Model, @Attribute, @Relationship). Swift Data generiert automatisch die gesamte notwendige Hintergrundlogik: Tabellenerstellung, Änderungsverwaltung, Abhängigkeitsverfolgung und Synchronisierung mit der UI über SwiftUI.
Der entscheidende Vorteil ist die enge Integration mit SwiftUI. Änderungen an den Daten aktualisieren die Benutzeroberfläche automatisch, ohne dass manuell objectWillChange.send() aufgerufen oder Listen neu geladen werden müssen. Das macht Swift Data zur idealen Wahl für neue SwiftUI-Projekte, die lokale Datenspeicherung benötigen (Aufgabenlisten, Notizen, Einstellungen, Cache).
2. Installation
Swift Data ist ab iOS 17 und macOS 14 Teil der Standardbibliothek von Apple. Eine separate Installation über Paketmanager (pip, npm, cargo) ist nicht erforderlich. Für die Nutzung reicht es aus, das Framework in einer Swift-Datei zu importieren.
Wichtig: Das Deployment Target Ihres Projekts muss mindestens iOS 17.0 oder macOS 14.0 betragen.
Befehl zum Hinzufügen zum Projekt (über Xcode):
// Swift Data benötigt keine Installation. Einfach importieren:
import SwiftData
Wenn Sie den Swift Package Manager (SPM) zur Verwaltung von Abhängigkeiten verwenden, muss Swift Data nicht als separates Paket hinzugefügt werden – es ist im SDK integriert.
3. Schnellstart – ein minimales Arbeitsbeispiel
Wir erstellen eine einfache App zum Speichern einer To-Do-Liste.
import SwiftUI
import SwiftData
// 1. Datenmodell definieren
@Model
final class TaskItem {
var title: String
var isCompleted: Bool
var createdAt: Date
init(title: String, isCompleted: Bool = false) {
self.title = title
self.isCompleted = isCompleted
self.createdAt = Date()
}
}
// 2. Container in der App konfigurieren
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(for: TaskItem.self) // Erstellt automatisch einen Container
}
}
// 3. Daten in der View verwenden
struct ContentView: View {
@Environment(\.modelContext) private var context
@Query private var tasks: [TaskItem]
var body: some View {
NavigationStack {
List {
ForEach(tasks) { task in
HStack {
Text(task.title)
Spacer()
if task.isCompleted {
Image(systemName: "checkmark")
}
}
}
.onDelete(perform: deleteTasks)
}
.navigationTitle("Aufgaben")
.toolbar {
ToolbarItem {
Button("Hinzufügen") {
let newTask = TaskItem(title: "Neue Aufgabe \(tasks.count + 1)")
context.in Auch in der Bibliothek
Arbeit mit S3 und Cloud-Speichern in Java: AWS SDK und MinIO
Swagger/OpenAPI-Generierung für Java: Bibliotheken und Werkzeuge
Gradle Kotlin DSL für Kotlin: Vollständige Anleitung mit Beispielen
Java-Standardbibliothek (Java Standard Library)