2016-03-31 6 views
0

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

0

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.

  1. Speichern Sie die Änderungen nicht im Arbeitsspeicher.

  2. 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.

+0

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

+0

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. –

+0

Großartige Idee! Sehr hilfreich. – Meonardo

0

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

Verwandte Themen