Observation Swift: Komplettleitfaden mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Observation für Swift: Komplettleitfaden mit Beispielen

1. Was ist Observation und warum wird es benötigt?

Observation ist ein neues Framework, das Apple auf der WWDC 2023 vorgestellt hat und den Mechanismus zur Datenbeobachtung in Swift grundlegend überarbeitet. Es ersetzt das veraltete Modell auf Basis von @Published und ObservableObject aus Combine und bietet einen leistungsstärkeren, threadsicheren und intuitiveren Ansatz. Im Kern von Observation stehen das Protokoll Observable und das Makro @Observable, mit denen Änderungen auf der Ebene einzelner Eigenschaften und nicht des gesamten Objekts verfolgt werden können.

Warum ist das notwendig? In der modernen Entwicklung für iOS, macOS, watchOS und tvOS ist SwiftUI das wichtigste Framework für die Benutzeroberfläche. Für eine effiziente Arbeit benötigt SwiftUI einen Mechanismus, der über Datenänderungen informiert, um nur die tatsächlich geänderten Teile der Oberfläche neu zu zeichnen. Der alte Ansatz mit ObservableObject zeichnete die gesamte View neu, sobald sich eine Eigenschaft änderte, was zu überflüssigen Berechnungen und Leistungseinbußen führte. Observation löst dieses Problem durch präzise Änderungsverfolgung auf Eigenschaftsebene.

Wichtige Vorteile: Observation ist Teil der Swift Standardbibliothek (ab iOS 17, macOS 14, tvOS 17, watchOS 10), benötigt keine zusätzlichen Abhängigkeiten, ist vollständig threadsicher (Änderungen können in jedem Thread vorgenommen werden, Benachrichtigungen erfolgen im Hauptthread) und ist eng mit SwiftUI integriert – über das Makro @Bindable und den neuen Modifikator .onChange(of:).

2. Installation

Observation ist ein integriertes Apple-Framework. Es ist ab Swift 5.9 und Xcode 15 Teil der Swift Standardbibliothek. Es sind keine zusätzlichen Installationen über Paketmanager (CocoaPods, Swift Package Manager, Carthage) erforderlich.

Um Observation zu nutzen, genügt Folgendes:

  1. Xcode 15 oder neuer installieren.
  2. In den Projekteinstellungen sicherstellen, dass das Deployment Target auf iOS 17, macOS 14, tvOS 17 oder watchOS 10 gesetzt ist.
  3. Das Framework in der gewünschten Datei importieren: import Observation.

Wenn Sie SwiftUI verwenden, ist ein separater Import von Observation nicht nötig – es ist automatisch verfügbar, sobald Sie SwiftUI importieren.

3. Schnellstart – Minimales Arbeitsbeispiel

Erstellen wir ein einfaches Datenmodell und eine View, die es anzeigt.

import SwiftUI

// 1. Observable Klasse erstellen
@Observable
class UserSettings {
    var username: String = "Gast"
    var isLoggedIn: Bool = false
}

// 2. In der View verwenden
struct ContentView: View {
    // @State für den Lebenszyklus
    @State private var settings = UserSettings()

    var body: some View {
        VStack(spacing: 20) {
            Text("Benutzer: \(settings.username)")
                .font(.title)

            TextField("Namen eingeben", text: $settings.username)
                .textFieldStyle(.roundedBorder)
                .padding()

            Toggle("Anmelden", isOn: $settings.isLoggedIn)
                .padding()

            if settings.isLoggedIn {
                Text("Sie sind angemeldet als \(settings.username)")
                    .foregroundColor(.green)
            } else {
                Text("Sie sind nicht angemeldet")
                    .foregroundColor(.red)
            }
        }
        .padding()
    }
}

In diesem Beispiel wandelt das Makro @Observable die Klasse UserSettings automatisch um, sodass SwiftUI Änderungen an username und isLoggedIn präzise verfolgen und nur die betroffenen Teile der Oberfläche aktualisieren kann.

Empfehlungen