Betrachten Sie eine iPhone-Anwendung, die ein Katalog von Tieren ist. Die Anwendung sollte dem Benutzer erlauben, benutzerdefinierte Informationen für jedes Tier hinzuzufügen - sagen wir mal eine Bewertung (auf einer Skala von 1 bis 5), sowie einige Notizen, die sie über das Tier eingeben können. Der Benutzer wird jedoch nicht in der Lage sein, die Tierdaten selbst zu ändern. Angenommen, die Aktualisierung der Anwendung sollte für den (statischen) Katalogteil leicht zu ändern sein, aber wir möchten, dass der (dynamische) benutzerdefinierte Benutzerinformationsteil zwischen den Aktualisierungen beibehalten wird, so dass der Benutzer keinen verliert ihre benutzerdefinierten Informationen.iPhone und Core Data: Wie man vom Benutzer eingegebene Daten zwischen Updates speichert?
Wir würden wahrscheinlich Core Data verwenden, um diese App zu bauen. Lassen Sie uns auch sagen, dass wir bereits einen vorherigen Prozess zum Einlesen von Tierdaten haben, um den Backing-Speicher (SQLite), den Core Data verwendet, vorzufüllen. Wir können diese Datenbankdatei in das Anwendungsbündel selbst einbetten, da sie nicht modifiziert wird. Wenn ein Benutzer ein Update auf die Anwendung herunterlädt, enthält die neue Version die neueste (statische) Tierkatalog-Datenbank, so dass wir uns keine Sorgen machen müssen, dass sie veraltet ist.
Aber jetzt der knifflige Teil: Wie speichern wir die (dynamischen) benutzerdefinierten Benutzerdaten auf eine solide Art und Weise?
Mein erster Gedanke ist, dass die (dynamische) Datenbank im Documents-Verzeichnis für die App gespeichert werden sollte, so dass Anwendungsupdates die vorhandenen Daten nicht verfälschen. Hab ich recht?
Mein zweiter Gedanke ist, dass, da die (dynamische) benutzerdefinierte Benutzerdaten-Datenbank nicht im selben Speicher wie der (statische) Tierkatalog ist, wir nicht naiv eine Beziehung zwischen den Rating- und den Notes-Entitäten herstellen können (in einem Datenbank) und die Animal-Entität (in der anderen Datenbank). In diesem Fall würde ich mir eine Lösung vorstellen, eine String-Eigenschaft "animalName" in der Entität Rating/Notes zu haben und sie zur Laufzeit abzugleichen. Ist dies der beste Weg, oder gibt es eine Möglichkeit, zwei verschiedene Datenbanken in Core Data zu "synchronisieren"?
@ Shaggy Frog ... Ich habe jetzt das gleiche Problem. Ich sehe, dass Ihre Lösung eine korrekte Lösung ist, um dieses Problem zu lösen, aber ich würde gerne wissen, ob Sie einen besseren Weg gefunden haben, dies zu tun. Danke für die Lösung trotzdem. es ist die beste Hilfe, die ich bis jetzt gefunden habe. – learner2010
@ user621808 Die einzige Problemumgehung wäre, die Datenbank nicht jedes Mal neu zu erstellen, wenn ich die Daten aktualisiere. Mit anderen Worten, erstellen Sie es genau einmal und bearbeiten Sie es dann manuell, wenn Sie hinzufügen/löschen/bearbeiten müssen. –