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
@Publishedverö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.