0Pricing
Swift Academy · Lektion

Das MVVM-Pattern

Trennen Sie Zuständigkeiten von View, View Model und Model.

Das MVVM-Pattern ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

Was ist MVVM?

MVVM steht für Model-View-ViewModel. Dabei handelt es sich um ein Architekturmuster, das Ihre App in drei Schichten mit jeweils einer klar abgegrenzten Aufgabe aufteilt.

  • Model — Daten und Geschäftsregeln
  • View — das, was die Benutzerin oder der Benutzer sieht
  • ViewModel — die Brücke, die Model-Daten für die View aufbereitet

Ziel ist die Trennung der Zuständigkeiten: Jede Schicht ändert sich unabhängig von den anderen aus ihrem eigenen Grund.

Die Model-Schicht

Das Model enthält Ihre Rohdaten und die Regeln, die für sie gelten. Es weiß nichts über den Bildschirm oder darüber, wie Dinge dargestellt werden.

Models sind meist einfache Structs oder Domänenobjekte. Sie lassen sich leicht testen, weil sie keine UI-Abhängigkeiten besitzen.

struct User {
    let id: UUID
    let firstName: String
    let lastName: String
    let isPremium: Bool
}

struct Order {
    let items: [String]
    let total: Decimal
}

Die View-Schicht

Die View ist ausschließlich für die Darstellung zuständig. In SwiftUI sind das Ihre View-Structs; in UIKit sind es Ihr UIViewController und seine Unteransichten.

Eine gute View enthält keine Geschäftslogik. Sie stellt lediglich den Zustand dar und leitet Benutzeraktionen an das ViewModel weiter.

struct ProfileView: View {
    @StateObject var viewModel: ProfileViewModel

    var body: some View {
        VStack {
            Text(viewModel.displayName)
            if viewModel.showBadge {
                Text("Premium")
            }
        }
    }
}

Die ViewModel-Schicht

Das ViewModel befindet sich zwischen Model und View. Es nimmt Rohdaten aus dem Model und wandelt sie in anzeigefertige Werte um, die die View direkt darstellen kann.

Außerdem stellt es Intents (Methoden) bereit, die die View bei Benutzerinteraktionen aufruft.

final class ProfileViewModel: ObservableObject {
    @Published var displayName: String
    @Published var showBadge: Bool

    init(user: User) {
        displayName = user.firstName + " " + user.lastName
        showBadge = user.isPremium
    }
}

Warum Zuständigkeiten trennen?

Wenn Formatierung, Netzwerkzugriffe und das Verdrahten der View in einem View-Controller miteinander vermischt sind, wird diese Datei zu einem riesigen, nicht testbaren Block.

Durch die Aufteilung der Zuständigkeiten:

  • kann das Model auf mehreren Bildschirmen wiederverwendet werden
  • kann das ViewModel ohne UI mit Unit-Tests geprüft werden
  • bleibt die View klein und deklarativ

Was gehört ins Model

Ins Model gehören:

  • Domänenentitäten (User, Product)
  • geschäftliche Validierungsregeln
  • Abstraktionen für Persistenz und Netzwerkzugriffe (oft über Services, die das ViewModel aufruft)

Nie gehören UI-Texte, Farben oder Formatierungen ins Model.

Was gehört ins ViewModel

Das ViewModel übernimmt die Darstellungslogik:

  • Datumsangaben, Währungen und Namen in Anzeigetexte formatieren
  • entscheiden, welche UI-Zustände sichtbar sind (Laden, Fehler, leer)
  • Aufrufe von Services koordinieren und Ergebnisse bereitstellen
final class CartViewModel: ObservableObject {
    @Published var totalText: String = ""

    func update(with order: Order) {
        let formatter = NumberFormatter()
        formatter.numberStyle = .currency
        totalText = formatter.string(from: order.total as NSNumber) ?? "-"
    }
}

Was gehört in die View

Die View sollte nur:

  • UI-Elemente anordnen und darstellen
  • den mit @Published veröffentlichten Zustand aus dem ViewModel lesen
  • Taps und Gesten weiterleiten, indem sie Methoden des ViewModels aufruft

Wenn Sie eine if-Bedingung in einer View finden, die Geschäftsregeln entscheidet, gehört diese Logik wahrscheinlich ins ViewModel.

Datenfluss in MVVM

Die Daten fließen in eine Richtung, die Aktionen in die Gegenrichtung:

  • Model -> ViewModel -> View für Daten
  • View -> ViewModel für Benutzerintentionen

Die View spricht nie direkt mit dem Model. Dadurch zeigen die Abhängigkeiten nach innen auf Ihre Domäne.

MVVM vs. MVC

Im klassischen MVC wird der Controller oft sehr groß, weil er gleichzeitig Formatierung, Netzwerkzugriffe und die Verdrahtung der View übernimmt.

MVVM löst diese Darstellungslogik in das ViewModel heraus, sodass der Controller (oder die SwiftUI-View) schlank bleibt. Das ViewModel ist unabhängig vom UI-Framework und daher viel leichter zu testen.

Ein vollständiger Teilbereich

Hier sehen Sie einen kleinen, aber vollständigen MVVM-Teilbereich, der die Schichten miteinander verbindet.

struct Account { let balance: Decimal }

final class AccountViewModel: ObservableObject {
    @Published var balanceText: String
    init(account: Account) {
        balanceText = "$" + "\(account.balance)"
    }
}

struct AccountView: View {
    @StateObject var viewModel: AccountViewModel
    var body: some View { Text(viewModel.balanceText) }
}

Kurztest

Testen Sie Ihr Verständnis der Zuständigkeiten in MVVM.

Zusammenfassung

Sie haben die drei Schichten von MVVM und ihre Abgrenzungen kennengelernt:

  • Model — Rohdaten und Geschäftsregeln, keine UI
  • ViewModel — Darstellungslogik und Intents
  • View — reine Darstellung des ViewModel-Zustands

Wenn Sie diese Zuständigkeiten trennen, wird Ihr Code testbar, wiederverwendbar und leicht verständlich. Als Nächstes verbinden Sie ein ViewModel mit einer View über Bindings.

Häufig gestellte Fragen

Ist die Lektion „Das MVVM-Pattern“ kostenlos?

Ja — der vollständige Text von „Das MVVM-Pattern“ 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 „Das MVVM-Pattern“?

Trennen Sie Zuständigkeiten von View, View Model und Model. 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 1 von 4.

Wie lange dauert die Lektion „Das MVVM-Pattern“?

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. Das MVVM-Pattern
  2. View Models an Views binden
  3. Das Coordinator-Pattern
  4. View Models testen
← Zurück zu Swift Academy