2016-03-21 15 views
0

Ich arbeite an App, in denen ich Backup von bestimmten Almirah der Bücher erstellen müssen & müssen später wiederherstellen.mehrere Persistenz speichert mit Kerndaten

Es gibt mehrere almirahs & jedes almirah haben mehrere Bücher & jedes Buch haben mehrere Kapitel & so weiter. In den Kerndaten verwende ich einen einzelnen Persistenzspeicher, um meine Daten zu speichern. Entitäten haben eine zu viele, viele 0 zu viele Beziehungen.

Eine Anforderung in der App ist es, Almirahs mit Server zu synchronisieren. Benutzer kann almirah, Buch & Fragen usw.

was ich will, ist vor dem Synchronisieren von Daten zum Server Ich möchte Backup einer bestimmten Almirah nehmen, die ich mit dem Server einschließlich aller Beziehung etc. synchronisieren muss, damit ich das wiederherstellen kann später wenn nötig.

Die Wiederherstellung ist erforderlich, weil mehrere Benutzer dieselbe Almirah & synchronisieren können, da nach der Synchronisierung die Daten nicht mehr so ​​sind wie vor der Synchronisierung.

Ich lese diese SO-Link aber nicht viel durchkommen. Jede Hilfe wäre willkommen. How can I duplicate, or copy a Core Data Managed Object?

Soll ich mehrere Persistenzspeicher verwenden?

Antwort

0

Ihre Anforderung wird besser außerhalb der Kerndaten gehandhabt, da Sie einen Prüfpunkt im gesamten Datenspeicher speichern, sodass Sie die Elemente im Datenspeicher nicht kopieren möchten, wenn Sie den gesamten Datenspeicher kopieren möchten einzelne Einheit.

Um dies zu tun, Sie jede ‚Kopie‘ des Datenspeichers in einem anderen Ordner speichern könnten, so würde man zum Beispiel Ordner working, v1, v2 (können Sie entscheiden, wie die Versionen verwalten) hat. Wenn Sie kopieren möchten, speichern Sie die working-Version und verwenden Sie dann NSFileManager, um alle Dateien im Ordner working zu v3 zu kopieren.

Beachten Sie, dass Ihr Datenspeicher wahrscheinlich als mehrere Dateien gespeichert ist. Versuchen Sie also nicht einfach, die .sqlite-Datei selbst zu kopieren.

Um eine alte Version wiederherzustellen, würden Sie alle Kontexte und verwalteten Objekte aus dem aktuellen Speicher löschen und dann die wiederherzustellende Version kopieren und den aktuellen Ordner working ersetzen.

+0

sollte es nicht einen einfachen Weg geben, damit umzugehen. Ich meine, kann ich nicht nur eine Sicherung eines einzelnen Datensatzes von einer Entität erstellen und diese später wiederherstellen? Wie in Sql können wir nur Backup von einzelnen Datensatz mit SQL-Abfragen und später können wir auf der Grundlage von gesicherten Daten zu aktualisieren? – stackNeverFlow

+0

Sie können alle Details eines einzelnen verwalteten Objekts kopieren, wenn Sie möchten, indem Sie Ihr eigenes Schema verwenden - Core-Daten sind nicht speziell dafür konzipiert – Wain