Meine Frage ist, wie das Timing der CoreData (lokale Datenbank) Synchronisierung mit der iCloud zu steuern. Wie ich weiß, wenn ich die lokalen Daten ändere, ändert sich die iCloud automatisch. Es ist möglich, dass iCloud Daten mit lokalen synchronisieren, bis ich fertig bin?CoreData + iCloud Sync Timing verwirrend
Antwort
Es gibt eine Art von Zwei-Stufen-synching. Ihre lokalen Daten werden zuerst in einen Container zum Synchronisieren eingefügt und anschließend wird der Container mit der iCloud synchronisiert. Dies wird von einem Dämon systemweit gemacht. Du kannst das nicht kontrollieren.
Sie möchten zwischen dem "lokalen Dokument" und dem "Cloud-Dokument" unterscheiden. Wie in den Kommentaren erwähnt, ist dies ähnlich wie anti-konzeptionell. Es gibt jedoch zwei Strategien, um dies zu erreichen. Keiner von ihnen ist von mir getestet.
Speichern Sie die Änderungen nicht im Arbeitsspeicher.
Fügen Sie eine lokale Version des Geschäfts hinzu und migrieren Sie zwischen der lokalen Version und der synchronisierten Version unter Verwendung von
migratePersistentStore:toURL:options:withType:error:
(NSPersistentStoreCoordinator
). das (synched) Dokument zu speichern, möglicherweise die lokale Version und die allgegenwärtige Version wegzulaufen mehr und mehr Wenn Sie die Zeit verzögern:
Beiden Varianten haben einen großen Nachteil. Dies führt möglicherweise zu nicht auflösbaren Konflikten. Da ist ein Grund, dass Apple empfiehlt, den Laden so bald und so oft wie möglich zu speichern (= es öffentlich zu machen). BTW: Core Data mit iCloud synch ist keine Groupware. Versuchen Sie nicht einmal, es so zu benutzen.
Es gibt keine direkt Möglichkeit, den Zeitpunkt zu steuern, aber die lokale - iCloud sync nicht durchgeführt wird, bis die Änderungen des verwalteten Objektkontext über die Methode save:
begangen werden
- 1. iCloud-Sync-Schlüsselanhänger
- 2. CoreData-Datenbank-Synchronisierung ohne iCloud?
- 3. Core-Daten + iCloud-Sync NSPersistentStoreDidImportUbiquitousContentChangesNotification
- 4. CoreData + iCloud + Cascade Löschen - wie geht das?
- 5. iCloud Sync mit App mit sqlite Datenbank - IOS
- 6. Simulator/Gerät wird nicht mit iCloud synchronisiert
- 7. So löschen Sie iCloud-Dokumente?
- 8. Core Data + iCloud Sync hat Speicher geändert Benachrichtigung aktualisiert nicht UI
- 9. iCloud NSFileManager API - Spielstandsspeicher
- 10. iCloud Auszeit. (Unter Verwendung von iCloud + Core Data + magischem Rekord
- 11. UIManagedDocument importiert keine iCloud-Änderungen
- 12. Verwirrend „instanceof“ Ergebnis
- 13. heroku push tutorials verwirrend
- 14. Verwirrend unerreichbar Musterfehler
- 15. CSS-Navigationsleiste (verwirrend)
- 16. Socket io Code verwirrend
- 17. Verwirrend involviert! Funktion_exists() || ! dynamic_sidebar()
- 18. Dart verwirrend TYPE Fehler
- 19. verwirrend Python urlencode Ordnung
- 20. verwirrend bedingte String-Format
- 21. preg_match_all verwirrend fehlgeschlagen
- 22. Core Data mit iCloud wechselt nie von `Local Storage verwenden: 1`
- 23. iCloud Debug-Messgerät Status: Deaktiviert
- 24. Verhindern, dass iCloud ältere App-Version herunterlädt
- 25. CoreData: Ubiquity: Mit lokalem Speicher: 1 wird nie 0
- 26. Baffling Coredata Saving Fehler
- 27. C++ String noch wörtlichen verwirrend
- 28. Odd und verwirrend PHP-Syntax
- 29. Java Int Division verwirrend mich
- 30. Zweig Raw Filter - Dokumentation verwirrend
Danke für Ihren Kommentar, hier ist nahes Szenario: Ich benutze Versionssteuerung Anwendung und ich habe viel Code in meinem Projekt geändert/hinzugefügt (Bild das sind die Daten in meinem lokalen), aber ich möchte nicht zu verpflichten der Server (iCloud), bis ich auf den "commit" -Button geklickt habe. Also bin ich etwas verwirrt über das "Timing". – Meonardo
Dies ist vergleichbar mit der Bekämpfung des Rahmens. Sie haben kein "lokales Dokument", das in das "Cloud-Dokument" verschoben wird. Es gibt nur das einzige Dokument, das über iCloud synchronisiert wird. Ich füge zwei mögliche Lösungen meiner A. hinzu. –
Großartige Idee! Sehr hilfreich. – Meonardo