Vor einigen Jahren hat Apple die iCloud-Synchronisierung von Core Data-Apps veröffentlicht. Dann veröffentlichte ich eine App für iPad / iPhone / MAC mit einem gemeinsamen Modell mit dem neuen Apple-Mechanismus. Die Dinge sind nicht wie erwartet verlaufen. Der Synchronisierungsmechanismus funktioniert manchmal nicht. Zum Beispiel, in den letzten Monaten, in meinem Fall endet die Synchronisierung selten gut durch meine 3 Geräte. Das Hochladen von Objekten funktioniert im Allgemeinen gut. Der Downloadvorgang neuer oder gelöschter Objekte stürzt jedoch normalerweise ab. Apple hat vor einiger Zeit eine Möglichkeit veröffentlicht, die Geräte dazu zu zwingen, ALLE Objekte des Modells (NSPersistentStoreRebuildFromUbiquousContentOption), die normalerweise funktionieren, erneut zu laden, aber es ist keine akzeptable Lösung.
Meine Fragen: Hat jemand erreicht, dass iCloud + Core Data funktioniert? Was ist mit dem Ausführen von iCloud + CD unter iOS 9 + El Capitan, keine Erfahrung?
Ich bewerte die Umstellung auf die neue CloudKIT-API, aber ich mag die Idee, einen Objekt-Upload selbst zu verwalten, wenn das Gerät offline ist. Ist der neue Mechanismus der Push-Benachrichtigungen, der Modelländerungen anzeigt, in Ordnung?
Danke
Dies ist eine Frage, die ich in den letzten Monaten intensiv untersucht habe, fürchte ich, ohne eine definitive Antwort.
Folgendes kann ich Ihnen anhand meiner Erfahrung sagen:
Wenn Sie, wie ich, nicht mit CloudKit neu anfangen möchten, das zuverlässig funktioniert, aber Sie einen Großteil der Synchronisierungsarbeiten und die Konvertierung von CKRecords zu ManagedObjects manuell durchführen müssen, geben Sie Ensembles.io eine Chance: es funktioniert sehr gut für mich, die Schicht zwischen Core Data und iCloud funktioniert wirklich in meinem Fall, wo CD + iCloud nicht funktioniert. Ich benutze die Version 1.0, die Open Source ist und iCloud als eines ihrer möglichen Backends unterstützt (und Version 2.0, bezahlt, unterstützt noch mehr); In ein paar Tagen habe ich zuverlässige Synchronisation mit automatischer Deduplizierung erhalten (Sie müssen eine uniqueIdentifier-Eigenschaft bereitstellen, damit es funktioniert, aber ich hatte bereits etwas an Ort und Stelle ...). Das einzige Problem, das ich noch nicht herausgefunden habe: Manchmal (1 Fall von 10, würde ich sagen) wird ein Objekt nicht sofort beim Editieren oder Löschen synchronisiert, aber es kommt immer auf das andere Gerät, wenn ein anderes Objekt hinzugefügt wird , bearbeitet oder gelöscht: nichts ist verloren gegangen und alles wurde "automatisch" für mich behandelt, als diese Verzögerungen auftraten, aber trotzdem würde ich bevorzugen, dass alles immer sofort synchronisiert wird. Ensembles hat auch eine gute Protokollierung für das Debuggen, etwas, das Sie schätzen werden, wenn Sie von Vanille CD + iCloud kommen. Wenn Sie es ausprobieren möchten, sollten Sie sich diese Ressourcen ansehen:
Wenn Sie absolut sicher sind, dass Sie keinen Layer / Third Party Code zwischen Core Data und iCloud haben wollen (ich dachte es mir selbst, aber ich habe meine Meinung geändert, als ich merkte, dass ich drei Monate meines Lebens verloren habe und nichts bekam im Gegenzug), die Implementierungen von Core Data + iCloud, die ich online gefunden habe und die vielversprechender aussahen:
Ich habe diese letzten zwei Lösungen nicht selbst ausprobiert, weil mein letzter Plan des Angriffs war, Ensembles zu versuchen und, wenn es für mich nicht funktionierte, mit diesen Annäherungen zu gehen. Da Ensembles sehr gut zu mir waren, musste ich sie nicht ausprobieren, aber sie sahen wieder solide aus.
Ein letzter Gedanke, der mich stört: Auf den WWDC-Sitzungen 2015 wird Core Data + iCloud nicht erwähnt. Das bedeutet für mich, dass die Synchronisierungslösung, die wir wählen, nicht gut ist.
Hoffe, das hilft.
Tags und Links synchronization core-data icloud cloudkit ensembles