SyncState-Implementierung in AppState

August 26, 2025 · View on GitHub

Dieser Leitfaden beschreibt, wie Sie SyncState in Ihrer Anwendung einrichten und konfigurieren, einschließlich der Einrichtung von iCloud-Funktionen und des Verständnisses potenzieller Einschränkungen.

1. Einrichten der iCloud-Funktionen

Um SyncState in Ihrer Anwendung zu verwenden, müssen Sie zuerst iCloud in Ihrem Projekt aktivieren und den Schlüssel-Wert-Speicher konfigurieren.

Schritte zum Aktivieren von iCloud und des Schlüssel-Wert-Speichers:

  1. Öffnen Sie Ihr Xcode-Projekt und navigieren Sie zu Ihren Projekteinstellungen.
  2. Wählen Sie unter dem Tab "Signing & Capabilities" Ihr Ziel (iOS oder macOS) aus.
  3. Klicken Sie auf die Schaltfläche "+ Capability" und wählen Sie "iCloud" aus der Liste.
  4. Aktivieren Sie die Option "Key-Value storage" unter den iCloud-Einstellungen. Dadurch kann Ihre App kleine Datenmengen mithilfe von iCloud speichern und synchronisieren.

Konfiguration der Entitlements-Datei:

  1. Suchen oder erstellen Sie in Ihrem Xcode-Projekt die Entitlements-Datei für Ihre App.
  2. Stellen Sie sicher, dass der iCloud-Schlüssel-Wert-Speicher in der Entitlements-Datei mit dem richtigen iCloud-Container korrekt eingerichtet ist.

Beispiel in der Entitlements-Datei:

<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>$(TeamIdentifierPrefix)com.yourdomain.app</string>

Stellen Sie sicher, dass der Zeichenfolgenwert mit dem mit Ihrem Projekt verknüpften iCloud-Container übereinstimmt.

2. Verwendung von SyncState in Ihrer Anwendung

Sobald iCloud aktiviert ist, können Sie SyncState in Ihrer Anwendung verwenden, um Daten über Geräte hinweg zu synchronisieren.

Beispiel für die Verwendung von SyncState:

import AppState
import SwiftUI

extension Application {
    var syncValue: SyncState<Int?> {
        syncState(id: "syncValue")
    }
}

struct ContentView: View {
    @SyncState(\.syncValue) private var syncValue: Int?

    var body: some View {
        VStack {
            if let syncValue = syncValue {
                Text("SyncValue: \(syncValue)")
            } else {
                Text("No SyncValue")
            }

            Button("Update SyncValue") {
                syncValue = Int.random(in: 0..<100)
            }
        }
    }
}

In diesem Beispiel wird der Synchronisierungszustand in iCloud gespeichert und auf allen Geräten synchronisiert, die mit demselben iCloud-Konto angemeldet sind.

3. Einschränkungen und bewährte Verfahren

SyncState verwendet NSUbiquitousKeyValueStore, das einige Einschränkungen aufweist:

  • Speicherlimit: SyncState ist für kleine Datenmengen ausgelegt. Das Gesamtspeicherlimit beträgt 1 MB, und jedes Schlüssel-Wert-Paar ist auf etwa 1 MB begrenzt.
  • Synchronisierung: Änderungen am SyncState werden nicht sofort auf allen Geräten synchronisiert. Es kann zu einer leichten Verzögerung bei der Synchronisierung kommen, und die iCloud-Synchronisierung kann gelegentlich durch Netzwerkbedingungen beeinträchtigt werden.

Bewährte Verfahren:

  • Verwenden Sie SyncState für kleine Daten: Stellen Sie sicher, dass nur kleine Daten wie Benutzereinstellungen oder Einstellungen mit SyncState synchronisiert werden.
  • Behandeln Sie SyncState-Fehler ordnungsgemäß: Verwenden Sie Standardwerte oder Fehlerbehandlungsmechanismen, um potenzielle Synchronisierungsverzögerungen oder -fehler zu berücksichtigen.

4. Fazit

Indem Sie iCloud ordnungsgemäß konfigurieren und die Einschränkungen von SyncState verstehen, können Sie dessen Leistungsfähigkeit nutzen, um Daten über Geräte hinweg zu synchronisieren. Stellen Sie sicher, dass Sie SyncState nur für kleine, kritische Daten verwenden, um potenzielle Probleme mit den iCloud-Speicherlimits zu vermeiden.


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