View-Identität verstehen
Steuern Sie, wie SwiftUI Views vergleicht und wiederverwendet.
View-Identität verstehen 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.
Identität steuert SwiftUI
SwiftUI verfolgt jede Ansicht anhand ihrer Identität, um zu entscheiden, ob eine bestehende Ansicht aktualisiert oder eine neue erstellt werden soll.
Die korrekte Identität ist der wichtigste Hebel für Korrektheit und Performance.
Zwei Arten von Identität
SwiftUI verwendet zwei Formen: strukturelle Identität (die Position einer Ansicht im Ansichtsbaum) und explizite Identität (eine von Ihnen vergebene ID).
Strukturelle Identität
Standardmäßig ergibt sich die Identität einer Ansicht aus ihrer Position in der Hierarchie. Die folgenden if-Zweige erzeugen zwei strukturell unterschiedliche Ansichten.
var body: some View {
if isOn {
Text("On") // one identity
} else {
Text("Off") // a different identity
}
}Warum Zweige ihren Zustand verlieren
Da jeder Zweig eine andere strukturelle Identität besitzt, wird beim Wechsel zwischen ihnen die erste Ansicht zerstört und die zweite erstellt. Jeder darin enthaltene @State wird zurückgesetzt.
if isExpanded {
DetailView() // new instance each time the branch flips
} else {
SummaryView()
}Explizite Identität mit id()
Der Modifikator .id(_:) weist eine explizite Identität zu. Wenn Sie die ID ändern, teilt dies SwiftUI mit: „Dies ist eine andere Ansicht.“ Dadurch wird eine neue Instanz erstellt und der Zustand zurückgesetzt.
CounterView()
.id(selectedTab) // new identity per tabIdentität in ForEach
ForEach benötigt für jedes Element eine stabile Identität. Verwenden Sie einen Key Path zu einer stabilen ID, niemals den Array-Index für veränderliche Collections.
ForEach(items, id: \.id) { item in
RowView(item: item)
}Die Falle der Index-Identität
Wenn Sie id: \.self für Indizes oder veränderliche Werte verwenden, werden Identitäten bei Änderungen der Daten neu zugeordnet. Das führt zu falschen Animationen und verlorenem Zustand.
// Risky if items reorder or values repeat:
// ForEach(0..<items.count, id: \.self) { ... }Identität und Animation
Animationen interpolieren zwischen Zuständen derselben Identität. Wenn sich die Identität ändert, führt SwiftUI anstelle einer fließenden Animation einen Einfüge-/Entfernungsübergang aus.
withAnimation {
// same identity -> property animates
// changed id -> transition (fade/slide)
}Bedingte Modifikatoren ändern die Identität
Wenn Sie einen Modifikator innerhalb eines if anwenden, kann sich die strukturelle Identität ändern und der Zustand zurückgesetzt werden. Bevorzugen Sie eine einzelne Ansicht, deren Modifikatorwert bedingt berechnet wird.
// Better: keep one identity
Text("Hi")
.opacity(isHidden ? 0 : 1)
// Worse: branching creates two identitiesAnyView löscht Identitätsinformationen
Wenn Sie Ansichten in AnyView verpacken, verbergen Sie ihren Typ vor SwiftUI, wodurch die effiziente Differenzbildung eingeschränkt wird. Verwenden Sie nach Möglichkeit stattdessen konkrete Typen oder @ViewBuilder.
// Prefer @ViewBuilder over returning AnyView
@ViewBuilder
func content() -> some View {
if flag { A() } else { B() }
}Stabile Identität = stabiler Zustand
Als Faustregel gilt: Halten Sie die Identität stabil, wenn Zustand und fließende Animationen erhalten bleiben sollen. Ändern Sie die Identität bewusst, wenn Sie tatsächlich einen Neuanfang wünschen.
Kurzer Test: Ansichtsidentität
Testen Sie Ihr Verständnis der Ansichtsidentität.
Zusammenfassung: Ansichtsidentität verstehen
SwiftUI identifiziert Ansichten strukturell (Position im Baum) und explizit (.id). Eine stabile Identität bewahrt @State und ermöglicht eine fließende Animation von Eigenschaften. Eine Änderung der Identität setzt den Zustand zurück und löst Übergänge aus.
Geben Sie ForEach stabile IDs, vermeiden Sie bei veränderlichen Daten eine Identität anhand des Indexes, minimieren Sie Verzweigungen, die die Identität wechseln, und vermeiden Sie AnyView, wenn ein konkreter Typ verwendet werden kann.
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 „View-Identität verstehen“ kostenlos?
Ja — der vollständige Text von „View-Identität verstehen“ 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 „View-Identität verstehen“?
Steuern Sie, wie SwiftUI Views vergleicht und wiederverwendet. 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 „View-Identität verstehen“?
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
- View-Identität verstehen
- Neuberechnung von Body minimieren
- Equatable Views und @State-Sichtbarkeit
- Profiling mit dem SwiftUI-Instrument