Swift Academy · Lektion

Zustandsautomaten mit Enums modellieren

Stellen Sie Zustandsübergänge einer App sicher mit Swift-Enums dar.

Lektion 4 von 412 Schritte

Zustandsautomaten mit Enums modellieren ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.

Willkommen

Enums eignen sich ideal zum Modellieren endlicher Zustandsautomaten. Jeder Case ist ein Zustand, und Übergänge sind Funktionen, die den nächsten Zustand zurückgeben. Dadurch können ungültige Zustände nicht dargestellt werden.

Einfaches Zustands-Enum

```swift enum TrafficLight { case red, yellow, green func next() -> TrafficLight { switch self { case .red: return .green case .green: return .yellow case .yellow: return .red } } } var light = TrafficLight.red light = light.next() // .green ```

Zustände mit assoziierten Daten

```swift enum LoadState { case idle case loading(progress: Double) case loaded(T) case failed(Error) } var state: LoadState<[String]> = .idle state = .loading(progress: 0.5) state = .loaded(["alice","bob"]) ```

Übergangsfunktion

```swift func transition(_ state: LoadState, event: AppEvent) -> LoadState { switch (state, event) { case (.idle, .startFetch): return .loading(progress: 0) case (.loading, .progress(let p)): return .loading(progress: p) case (.loading, .success(let d)): return .loaded(d) case (.loading, .error(let e)): return .failed(e) default: return state } } ```

Warum Zustandsautomaten mit Enums?

Vorteile: • Vollständiges `switch` — der Compiler erzwingt die Behandlung aller Zustände • Ungültige Kombinationen sind unmöglich (z. B. `loaded` ohne Daten) • Der Zustand ist ein Wert — leicht zu testen, zu kopieren und zu protokollieren • Die Benutzeroberfläche kann den Zustand prüfen und entsprechend rendern

UI-Rendering aus dem Zustand

```swift func render(_ state: LoadState<[User]>) { switch state { case .idle: showEmptyView() case .loading(let p): showProgress(p) case .loaded(let users): showList(users) case .failed(let err): showError(err) } } ```

Zustandsautomat eines Players

```swift enum PlayerState { case stopped case playing(track: String, position: TimeInterval) case paused(track: String, position: TimeInterval) } ``` Nur `playing` und `paused` enthalten einen Track — `stopped` nicht. Dadurch dokumentiert sich das Modell selbst.

Ungültige Übergänge verhindern

```swift extension PlayerState { mutating func play(track: String) { guard case .stopped = self else { return } self = .playing(track: track, position: 0) } mutating func pause() { if case .playing(let t, let p) = self { self = .paused(track: t, position: p) } } } ```

Zustandsautomaten testen

```swift func testLight() { var l = TrafficLight.red assert(l.next() == .green) assert(l.next().next() == .yellow) } ``` Zustandsautomaten mit reinen Übergangsfunktionen lassen sich problemlos als Unit-Tests testen — ohne Mocks.

Zustandsautomaten kombinieren

In großen Apps arbeiten oft mehrere Zustandsautomaten zusammen: ```swift struct AppState { var auth: AuthState var data: LoadState<[Article]> var ui: UIState } ``` Kombinieren Sie sie in einer einzigen Root-State-Struktur für Architekturen im Flux-/Redux-Stil.

Kurztest

Was macht Zustandsautomaten auf Enum-Basis compiler-sicher?

Zusammenfassung

Die wichtigsten Erkenntnisse: • Jeder Case = ein Zustand; Übergänge = Funktionen, die den nächsten Zustand zurückgeben • Assoziierte Werte enthalten zustandsspezifische Daten • Vollständiges `switch` = vom Compiler erzwungene Zustandsbehandlung • Reine Übergangsfunktionen lassen sich einfach als Unit-Tests testen • Mehrere Zustandsautomaten können in einer Root-State-Struktur kombiniert werden Kurs abgeschlossen! Als Nächstes: Protokollkomposition.
Kostenlos starten

Lerne Swift mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
122
Lektionen
409

Häufig gestellte Fragen

Ist die Lektion „Zustandsautomaten mit Enums modellieren“ kostenlos?

Ja — der vollständige Text von „Zustandsautomaten mit Enums modellieren“ 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 „Zustandsautomaten mit Enums modellieren“?

Stellen Sie Zustandsübergänge einer App sicher mit Swift-Enums dar. 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 4 von 4.

Wie lange dauert die Lektion „Zustandsautomaten mit Enums modellieren“?

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. Rohwerte und CaseIterable
  2. Zugeordnete Werte für umfangreiche Daten
  3. Indirekte Enums und rekursive Strukturen
  4. Zustandsautomaten mit Enums modellieren
← Zurück zu Swift Academy