2015-07-10 7 views
8

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.iCloud + Core Data heute (10. Juli 2015)

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 evaluiere die Migration 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?

Dank

+0

iOS 9 ist immer noch in der Beta, die Spezifikation wird sich wahrscheinlich Tag für Tag ändern ... es funktioniert heute nicht, es wird morgen funktionieren, bis der erste GM veröffentlicht wird. – Raptor

+0

Ich glaube, Sie haben keine meiner Fragen beantwortet – CommonWood

+0

meine Idee ist: Ich denke, niemand wird endgültige Antwort geben, wie die gegebene Antwort in jeder Minute ungültig werden kann. – Raptor

Antwort

8

Dies ist eine Frage, die ich tief in den letzten Monaten recherchiert habe, bin ich ohne eine endgültige Antwort Angst.

Hier ist, was ich Ihnen aus meiner Erfahrung sagen kann:

  1. Wenn Sie, wie ich, wollen mit Wolkenjungen nicht anfangen, die zuverlässig funktioniert, aber erfordern, dass Sie manuell viel von der Synchronisierung zu handhaben Arbeit und die Konvertierung von CKRecords zu ManagedObjects, geben 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 unterstützt iCloud als eines ihrer möglichen Back-Ends (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, sondern immer auf dem anderen Gerät, wenn ein anderes Objekt ist hinzugefügt, bearbeitet oder gelöscht: nichts ist verloren gegangen und alles wurde "automatisch" für mich behandelt, wenn diese Verzögerungen aufgetreten sind, aber trotzdem würde ich es vorziehen, 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 einen Blick auf diese Ressourcen nehmen:

  2. Wenn Sie absolut sicher sind, dass du keine Layer/Third-Party-Code zwischen Core Data und iCloud willst (ich dachte mir selbst, aber ich habe mich geändert meiner Meinung nach, als ich merkte ich drei Monate meines Lebens verloren und bekam im Gegenzug nichts), die Implementierungen von Core Data + iCloud, die ich online gefunden habe und sah vielversprechend waren dies:

ich habe mich nicht, diese letzten beiden Lösungen ausprobiert, weil mein letzter Plan des Angriffs war, zu versuchen Ensembles und, wenn es nicht für mich arbeiten, mit diesen Ansätzen 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. Dies bedeutet für mich, dass wir für die Synchronisierungslösung, die wir wählen, keinen Erfolg haben.

Hoffe, das hilft.

+1

+1 Ensembles. Persönlich habe ich vor langer Zeit auf Apples iCloud-Integration mit Core Data verzichtet. Es könnte jetzt repariert werden, und es gibt einige, die behaupten, dass es gewesen ist ... aber ich ging zu einer einfachen Lösung, die ich selbst rollte, und dann zu Ensembles und nie zurückgeschaut habe. Dies ist einer der wenigen Bereiche, in denen ich glaube, dass Apple komplett versagt hat, und ich habe die Technologie komplett aufgegeben. Ensembles ist so gut in dem, was es tut, Sie werden für das Upgrade bezahlen wollen, auch wenn Sie es vielleicht nicht brauchen. –

+0

@JodyHagins Ich stimme dir vollkommen zu; Ich habe viele Male gelesen, dass die Situation jetzt besser ist, aber dennoch habe ich keine wirklich brauchbare Lösung gefunden, um es zum Laufen zu bringen: Wenn es jetzt nicht so schlimm ist, kann ich mir nur vorstellen, wie schrecklich es vor ein paar Jahren war;). Ich bestätige, dass der Wunsch, Ensembles 2.0 zu kaufen oder zumindest für das Buch zu bezahlen, stark ist, nur um sie zu unterstützen, aber ich arbeite an einer Hobby-App mit einem sehr knappen (nicht existierenden) Budget, also muss ich warten verkaufe zuerst ein paar Kopien, wenn ich starte. – cdf1982

+0

Hallo cdf1982, so weit ich weiß, das Problem mit Synchronisierungsalternativen von Drittanbietern ist, dass sie nicht funktionieren können, falls das Gerät offline ist und es schließlich Verbindung mit einem WIFI-Netz bekommt. Das heißt: Stellen Sie sich vor, Sie sind offline und fügen ein Objekt hinzu. Dann steckst du dein Handy in deine Tasche und wenn du gehst, verbindet es sich mit einem WIFI. Mit iCloud + CD gibt es eine Systemwarteschlange, die Ihr Objekt automatisch hochlädt. Synchronisierungsmechanismen von Drittanbietern können dies jedoch nicht. Es ist wahr? – CommonWood