Ich habe eine funktionierende Implementierung von iCloud. Jetzt möchte ich die Konfliktbehandlung verbessern, indem ich einige Merge-Funktionen hinzufüge. Ich habe versucht, einen konsistenten Weg zu finden, um einen Konflikt zu Testzwecken zu erzwingen, aber ich hatte bisher kein Glück, Konflikte treten nicht konsequent auf, wenn ich sie erwarte. Dies könnte darauf hindeuten, dass ich etwas falsch mache, oder vielleicht, dass ich etwas über die Funktionsweise von iCloud missverstanden habe (noch etwas anderes, meine ich).Wie erzwinge ich einen Versionskonflikt in iCloud
Ich benutze UIDocument und ja, ich höre die UIDocumentStateChangedNotification. Tatsächlich bekomme ich gelegentlich gelegentliche Konfliktmitteilungen. Außerdem habe ich nur eine Datei in iCloud.
Mit zwei Geräten des gleichen iCloud accout verwenden, hier ist der Fluss der Ereignisse, die ich erwartet hatte immer einen Konflikt verursachen:
- öffnen Sie die Datei auf beiden Geräten (beide Geräte werden nun korrekt den gleichen Inhalt zu sehen). Hinweis: Hier ist die einzige Zeit, die openWithCompletionHandler aufgerufen wird, danach wird es nie wieder aufgerufen.
- Nehmen Sie einige Änderungen an Gerät A vor und rufen Sie saveToURL auf.
- Warten Sie einige Zeit, damit sich die Änderung ausbreiten kann.
- Nehmen Sie weitere Änderungen an Gerät B vor und rufen Sie saveToURL auf.
- Warten Sie einige Zeit, damit sich die Änderung ausbreiten kann.
- ERWARTET: Die App sollte eine Konfliktbenachrichtigung von iCloud erhalten. BEOBACHTET: Ein Konflikt tritt sehr gelegentlich auf, aber die meiste Zeit geschieht einfach, dass das UIDocument sein UIDocumentStateEditingDisabled-Flag gesetzt und nach etwa einer halben Sekunde wieder gelöscht wird (ich nehme an, die Bearbeitung wird während der iCloud deaktiviert) Daemon zieht die Version vom anderen Gerät und speichert sie im lokalen allgegenwärtigen Verzeichnis.
ähnlich wie ein Versionskontrollsystem wie SVN, ich die Version von Gerät B erwarte einen Konflikt zu verursachen, da ein „update“ notwendig ist, um durch die Vorrichtung A.
Am die Version hochgeladen zu bekommen Ich rechne falsch mit einem Konflikt in dem Szenario, das ich gerade beschrieben habe? Warum? Gibt es einen anderen Weg, um einen Konflikt konsequent zu erzwingen?
Danke!