Verwendungsübersicht
June 11, 2026 · View on GitHub
Diese Übersicht bietet eine schnelle Einführung in die Verwendung der Schlüsselkomponenten der AppState-Bibliothek in einer SwiftUI-View. Jeder Abschnitt enthält einfache Beispiele, die in den Rahmen einer SwiftUI-Ansichtsstruktur passen.
Definieren von Werten in der Anwendungserweiterung
Um anwendungsweite Zustände oder Abhängigkeiten zu definieren, sollten Sie das Application-Objekt erweitern. Dies ermöglicht es Ihnen, den gesamten Zustand Ihrer App an einem Ort zu zentralisieren. Hier ist ein Beispiel, wie Sie Application erweitern können, um verschiedene Zustände und Abhängigkeiten zu erstellen:
import AppState
extension Application {
var user: State<User> {
state(initial: User(name: "Guest", isLoggedIn: false))
}
var userPreferences: StoredState<String> {
storedState(initial: "Default Preferences", id: "userPreferences")
}
var darkModeEnabled: SyncState<Bool> {
syncState(initial: false, id: "darkModeEnabled")
}
var userToken: SecureState {
secureState(id: "userToken")
}
@MainActor
var largeDataset: FileState<[String]> {
fileState(initial: [], filename: "largeDataset")
}
}
State
State ermöglicht es Ihnen, einen anwendungsweiten Zustand zu definieren, auf den überall in Ihrer App zugegriffen und der geändert werden kann.
Beispiel
import AppState
import SwiftUI
struct ContentView: View {
@AppState(\.user) var user: User
var body: some View {
VStack {
Text("Hello, \(user.name)!")
Button("Log in") {
user.isLoggedIn.toggle()
}
}
}
}
StoredState
StoredState speichert den Zustand mit UserDefaults, um sicherzustellen, dass die Werte über App-Starts hinweg gespeichert werden.
Beispiel
import AppState
import SwiftUI
struct PreferencesView: View {
@StoredState(\.userPreferences) var userPreferences: String
var body: some View {
VStack {
Text("Preferences: \(userPreferences)")
Button("Update Preferences") {
userPreferences = "Updated Preferences"
}
}
}
}
SyncState
SyncState synchronisiert den App-Zustand über mehrere Geräte hinweg mit iCloud.
Beispiel
import AppState
import SwiftUI
struct SyncSettingsView: View {
@SyncState(\.darkModeEnabled) var isDarkModeEnabled: Bool
var body: some View {
VStack {
Toggle("Dark Mode", isOn: $isDarkModeEnabled)
}
}
}
FileState
FileState wird verwendet, um größere oder komplexere Daten dauerhaft im Dateisystem zu speichern, was es ideal für das Caching oder das Speichern von Daten macht, die nicht in die Grenzen von UserDefaults passen.
Beispiel
import AppState
import SwiftUI
struct LargeDataView: View {
@FileState(\.largeDataset) var largeDataset: [String]
var body: some View {
List(largeDataset, id: \.self) { item in
Text(item)
}
}
}
ModelState
🍎 ModelState verwaltet SwiftData-@Model-Objekte über AppState, indem ein gemeinsam genutzter ModelContainer injiziert wird. Es ist für View-Modelle, Dienste und anderen Nicht-View-Code gedacht; für reaktive Ansichten verwenden Sie SwiftDatas @Query zusammen mit dem von AppState bereitgestellten ModelContainer. SwiftData-Funktionen erfordern iOS 17+ / macOS 14+.
Beispiel
import AppState
import SwiftData
private func makeItemContainer() -> ModelContainer {
do {
return try ModelContainer(for: Item.self)
} catch {
fatalError("Failed to create ModelContainer: \(error)")
}
}
extension Application {
var modelContainer: Dependency<ModelContainer> {
modelContainer(makeItemContainer())
}
var items: ModelState<Item> {
modelState(container: \.modelContainer)
}
}
@MainActor
final class ItemsViewModel: ObservableObject {
@ModelState(\.items) var items: [Item]
func add(_ item: Item) {
$items.insert(item)
}
}
Weitere Details finden Sie im ModelState-Verwendungsleitfaden.
SecureState
SecureState speichert vertrauliche Daten sicher im Schlüsselbund.
Beispiel
import AppState
import SwiftUI
struct SecureView: View {
@SecureState(\.userToken) var userToken: String?
var body: some View {
VStack {
if let token = userToken {
Text("User token: \(token)")
} else {
Text("No token found.")
}
Button("Set Token") {
userToken = "secure_token_value"
}
}
}
}
Constant
Constant bietet unveränderlichen, schreibgeschützten Zugriff auf Werte im Zustand Ihrer Anwendung und gewährleistet so die Sicherheit beim Zugriff auf Werte, die nicht geändert werden sollen.
Beispiel
import AppState
import SwiftUI
struct ExampleView: View {
@Constant(\.user, \.name) var name: String
var body: some View {
Text("Username: \(name)")
}
}
Slicing State
Slice und OptionalSlice ermöglichen den Zugriff auf bestimmte Teile des Zustands Ihrer Anwendung.
Beispiel
import AppState
import SwiftUI
struct SlicingView: View {
@Slice(\.user, \.name) var name: String
var body: some View {
VStack {
Text("Username: \(name)")
Button("Update Username") {
name = "NewUsername"
}
}
}
}
Bewährte Praktiken
- Verwenden Sie
AppStatein SwiftUI-Ansichten: Property-Wrapper wie@AppState,@StoredState,@FileState,@SecureStateund andere sind für die Verwendung im Geltungsbereich von SwiftUI-Ansichten konzipiert. - Definieren Sie den Zustand in der Anwendungserweiterung: Zentralisieren Sie die Zustandsverwaltung, indem Sie
Applicationerweitern, um den Zustand und die Abhängigkeiten Ihrer App zu definieren. - Reaktive Aktualisierungen: SwiftUI aktualisiert Ansichten automatisch, wenn sich der Zustand ändert, sodass Sie die Benutzeroberfläche nicht manuell aktualisieren müssen.
- Leitfaden zu bewährten Praktiken: Für eine detaillierte Aufschlüsselung der bewährten Praktiken bei der Verwendung von AppState.
Nächste Schritte
Nachdem Sie sich mit der grundlegenden Verwendung vertraut gemacht haben, können Sie sich mit fortgeschritteneren Themen befassen:
- Erkunden Sie die Verwendung von FileState zum dauerhaften Speichern großer Datenmengen in Dateien im FileState-Verwendungsleitfaden.
- 🍎 Erfahren Sie, wie Sie SwiftData-Modelle über AppState verwalten, im ModelState-Verwendungsleitfaden.
- Erfahren Sie mehr über Konstanten und wie Sie sie für unveränderliche Werte im Zustand Ihrer App verwenden können, im Konstanten-Verwendungsleitfaden.
- Untersuchen Sie, wie Dependency in AppState verwendet wird, um gemeinsam genutzte Dienste zu verarbeiten, und sehen Sie sich Beispiele im Zustandsabhängigkeits-Verwendungsleitfaden an.
- Tauchen Sie tiefer in fortgeschrittene SwiftUI-Techniken wie die Verwendung von
ObservedDependencyzur Verwaltung beobachtbarer Abhängigkeiten in Ansichten im ObservedDependency-Verwendungsleitfaden ein. - Informationen zu fortgeschritteneren Verwendungstechniken wie der Just-in-Time-Erstellung und dem Vorabladen von Abhängigkeiten finden Sie im Leitfaden zur erweiterten Verwendung.
Diese Übersetzung wurde automatisch generiert und kann Fehler enthalten. Wenn Sie Muttersprachler sind, freuen wir uns über Ihre Korrekturvorschläge per Pull Request.