2010-08-30 5 views
10

Ich habe eine SQLite-Datenbank in der ersten Version meiner iPhone-Anwendung (die im App Store ist). Jetzt möchte ich die zweite Version der Anwendung ausrollen, die auch eine SQLite db enthält.Wie pflege ich Daten in einer SQLite-Datenbank auf einem iPhone bei einer Versionsaktualisierung der Anwendung?

Ich habe verstanden, dass nach der Aktualisierung die SQLite-Datenbank entfernt und dann die neue hinzugefügt wird. Ich möchte nicht, dass dies geschieht, da diese Datenbank einige Informationen enthält, die der Benutzer gespeichert hat. Es wäre nicht gut, wenn es beim Update gelöscht wird.

Frage ist, wie übertrage ich die Daten von der alten SQLite (alte Version) Datenbank in die neue? Und wie kann ich den Versionsaktualisierungsprozess im App Store testen?

Jede Hilfe würde sehr geschätzt werden. Vielen Dank.

Antwort

2

Die Antwort lautet: implementieren Versionierung in Ihrer Anwendung von Anfang an :-)

In diesem Fall können Sie eine App ohne Versionsinformationen betrachten 1. seine Version Was ich tun würde, Speicher ist die Version der Datenbank irgendwo (wahrscheinlich in der Datenbank selbst). Wenn die Datenbank geöffnet wird, überprüfen Sie ihre Version anhand der Version, die die Anwendung erwartet, nehmen Sie dann gegebenenfalls Änderungen an den Schemas vor und aktualisieren Sie die gespeicherte Versionsnummer.

Wenn Sie die Datenbank nicht in das Documents-Verzeichnis der App kopiert haben, ist dies alles problematisch, da sie sowieso nur gelesen werden würde. Andernfalls wird der Inhalt des Verzeichnisses Documents zwischen Aktualisierungen beibehalten.

Um das Update zu testen, starten Sie einfach mit einer neuen Kopie der vorherigen Version auf Ihrem Gerät. Dann installiere das neue (build and run wird gut funktionieren). Sie behalten alte Versionen Ihrer App, oder?

+0

Err ... Ich sollte definitiv alte Versionen meiner App behalten. Ich fange jetzt sowieso an. Aber ich verstehe, was du sagst und es scheint eine ziemlich gute Idee zu sein. Es ist ein bisschen ein Trick, die Version der App in die Datenbank einzufügen, aber trotzdem eine gute. Die Idee ist also, dass beim Start der Anwendung die Versionsnummer angezeigt wird. Wenn die Datenbank eine niedrigere Versionsnummer als die Anwendung selbst hat, dann starten Sie einige SQL-Anweisungen (wie neue Tabelle erstellen usw.)) und aktualisiere die Version innerhalb der Datenbank, damit beim nächsten Start der App nichts mehr aktualisiert werden muss. – Andrei

+0

Richtig, obwohl ich festgestellt habe, dass es besser ist, separate Versionsnummern für die App und die Datenbank zu pflegen. Andernfalls, wenn Sie die App aktualisieren, aber die Datenbank unverändert lassen, kann die Anwendung irrtümlicherweise Updates auf die Datenbank anwenden. – Brian

2

Das ist nicht etwas, was ich persönlich getestet habe, aber zum besten Wissen und Gewissen:

  1. Ihre erste Frage been answered und die kurze davon ist, dass man kein Glück, wenn Ihr sqlite db wird nicht in das Verzeichnis Documents kopiert, da das gesamte App-Bundle beim Upgrade ersetzt wird. Nehmen wir an, christo16 ist richtig, und vorausgesetzt, dass Ihre bereits ausgelieferte App nicht kopiert die db out zu Dokumente, möchten Sie möglicherweise eine vorläufige Version, die tut dies tun. Dann sollte nur sichergestellt werden, dass eine kritische Masse an Benutzern die vorläufige Version installiert hat, bevor Sie die Datenbankaktualisierungen bereitstellen.
  2. Re: testen. Sie sollten das Upgrade-Verhalten testen können, indem Sie Ihr Build über iTunes anstatt über Build & Run installieren. Es ist eine Weile her, seit ich es versucht habe ... die Anweisungen für einen Ad-hoc-Build zu befolgen, sollte ausreichen, obwohl es vielleicht zu viel ist.
+0

Danke ... Ich denke, das macht Sinn ... aber was ist, wenn es ein paar Änderungen an der neuen Datenbank gibt. Z.B. In dieser neuen Version habe ich eine neue Tabelle hinzugefügt, aber die andere Tabelle wurde nicht verändert. Was wäre ein guter Workaround dafür? – Andrei

Verwandte Themen