Ich habe ein Projekt, das bereits Core Data verwendet. Ich habe Unterstützung für das iPad hinzugefügt, aber jetzt muss ich iCloud & amp; Core Data zum Synchronisieren der Daten.
Ich bin auf Ensembles gestoßen, es scheint ein einfacher und robuster Rahmen zu sein, der zu meinem Projekt hinzugefügt werden kann. Gefunden hier: Ссылка
Allerdings gibt es keine Swift-Beispielprojekte mit dem Ensembles-Projekt, also habe ich versucht, es selbst zu machen. Hier sind die Schritte, die ich unternommen habe,
Schritt 1
Fügen Sie Ensembles manuell zu iOS-Projekten hinzu.
Schritt 2
Erstellen Sie einen neuen CoreDataStack mit einer vorhandenen persistenten Speicher-SQL-Datei.
%Vor%Schritt 3
Aktualisieren Sie den App-Delegierten, um Benachrichtigungen zu synchronisieren und hinzuzufügen
%Vor%Schritt 4
Hinzufügen von Benachrichtigungen zum Projekt zum Aktualisieren der Benutzeroberfläche
%Vor%Schritt 5
Beobachten Sie, wie die Magie passiert. Leider gibt es keine Magie. Der neue CoreDataStack funktioniert gut, ich kann Daten aus dem persistenten Speicher speichern und abrufen.
Ich habe zwei Geräte in demselben iCloud-Konto angemeldet und keine Daten werden für das andere Gerät freigegeben.
Beim Löschen der App und Neuinstallation werden die Daten nicht von der iCloud abgerufen und im permanenten Speicher gespeichert.
Ich erhalte folgende NSLog
, wenn ich "manchmal" Daten speichere oder die App hochlade.
Dies ist das Ergebnis für die folgende appDelegate Benachrichtigungsfunktion
%Vor%Die Benachrichtigung wird von dieser Funktion im CoreDataStack gesendet, wenn Änderungen zusammengeführt werden.
%Vor%Alles scheint also gut zu funktionieren. Ich bekomme keine Fehler, aber die Daten werden nicht synchronisiert. Ich kann nicht sagen, ob das Problem die Datensicherung in iCloud oder das Abrufen von iCloud und das Zusammenführen mit dem persistenten Speicher ist. Alles, was ich sagen kann, ist, dass Daten nicht zwischen Geräten ausgetauscht werden, die dasselbe iCloud-Konto verwenden, und die App die Daten aus der iCloud bei einer Neuinstallation der App nicht tatsächlich wiederherstellt.