Verwendung von Slice und OptionalSlice

August 26, 2025 · View on GitHub

Slice und OptionalSlice sind Komponenten der AppState-Bibliothek, mit denen Sie auf bestimmte Teile des Zustands Ihrer Anwendung zugreifen können. Sie sind nützlich, wenn Sie einen Teil einer komplexeren Zustandsstruktur bearbeiten oder beobachten müssen.

Übersicht

  • Slice: Ermöglicht den Zugriff auf und die Änderung eines bestimmten Teils eines vorhandenen State-Objekts.
  • OptionalSlice: Funktioniert ähnlich wie Slice, ist aber für den Umgang mit optionalen Werten konzipiert, z. B. wenn ein Teil Ihres Zustands nil sein kann oder nicht.

Hauptmerkmale

  • Selektiver Zustandszugriff: Greifen Sie nur auf den Teil des Zustands zu, den Sie benötigen.
  • Threadsicherheit: Genau wie bei anderen Zustandsverwaltungstypen in AppState sind Slice und OptionalSlice threadsicher.
  • Reaktivität: SwiftUI-Ansichten werden aktualisiert, wenn sich der Slice des Zustands ändert, wodurch sichergestellt wird, dass Ihre Benutzeroberfläche reaktiv bleibt.

Anwendungsbeispiel

Verwendung von Slice

In diesem Beispiel verwenden wir Slice, um auf einen bestimmten Teil des Zustands zuzugreifen und ihn zu aktualisieren – in diesem Fall den username aus einem komplexeren User-Objekt, das im App-Zustand gespeichert ist.

import AppState
import SwiftUI

struct User {
    var username: String
    var email: String
}

extension Application {
    var user: State<User> {
        state(initial: User(username: "Guest", email: "guest@example.com"))
    }
}

struct SlicingView: View {
    @Slice(\.user, \.username) var username: String

    var body: some View {
        VStack {
            Text("Benutzername: \(username)")
            Button("Benutzernamen aktualisieren") {
                username = "NewUsername"
            }
        }
    }
}

Verwendung von OptionalSlice

OptionalSlice ist nützlich, wenn ein Teil Ihres Zustands nil sein kann. In diesem Beispiel kann das User-Objekt selbst nil sein, daher verwenden wir OptionalSlice, um diesen Fall sicher zu behandeln.

import AppState
import SwiftUI

extension Application {
    var user: State<User?> {
        state(initial: nil)
    }
}

struct OptionalSlicingView: View {
    @OptionalSlice(\.user, \.username) var username: String?

    var body: some View {
        VStack {
            if let username = username {
                Text("Benutzername: \(username)")
            } else {
                Text("Kein Benutzername verfügbar")
            }
            Button("Benutzernamen festlegen") {
                username = "UpdatedUsername"
            }
        }
    }
}

Bewährte Praktiken

  • Verwenden Sie Slice für nicht-optionale Zustände: Wenn Ihr Zustand garantiert nicht-optional ist, verwenden Sie Slice, um darauf zuzugreifen und ihn zu aktualisieren.
  • Verwenden Sie OptionalSlice für optionale Zustände: Wenn Ihr Zustand oder ein Teil des Zustands optional ist, verwenden Sie OptionalSlice, um Fälle zu behandeln, in denen der Wert nil sein kann.
  • Threadsicherheit: Genau wie bei State sind Slice und OptionalSlice threadsicher und für die Arbeit mit dem Nebenläufigkeitsmodell von Swift konzipiert.

Fazit

Slice und OptionalSlice bieten leistungsstarke Möglichkeiten, auf bestimmte Teile Ihres Zustands auf threadsichere Weise zuzugreifen und diese zu ändern. Durch die Nutzung dieser Komponenten können Sie die Zustandsverwaltung in komplexeren Anwendungen vereinfachen und sicherstellen, dass Ihre Benutzeroberfläche reaktiv und auf dem neuesten Stand bleibt.


Diese Übersetzung wurde automatisch generiert und kann Fehler enthalten. Wenn Sie Muttersprachler sind, freuen wir uns über Ihre Korrekturvorschläge per Pull Request.