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 Zustandsnilsein 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
SliceundOptionalSlicethreadsicher. - 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
Slicefür nicht-optionale Zustände: Wenn Ihr Zustand garantiert nicht-optional ist, verwenden SieSlice, um darauf zuzugreifen und ihn zu aktualisieren. - Verwenden Sie
OptionalSlicefür optionale Zustände: Wenn Ihr Zustand oder ein Teil des Zustands optional ist, verwenden SieOptionalSlice, um Fälle zu behandeln, in denen der Wertnilsein kann. - Threadsicherheit: Genau wie bei
StatesindSliceundOptionalSlicethreadsicher 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.