sqlite-Datenbankupdate, wenn sich die App-Version in Appstore auf dem iPhone ändert

18

Ich habe eine App mit Version 1.0 im App-Store, die sqlite-Datenbank zum Lesen der Daten verwendet.
Jetzt möchte ich meine Version auf 1.1 mit Update in der Datenbankdatei aktualisieren.
Während der Installation Entwicklerzertifikat verwenden App auf dem Gerät hat die Datenbank nicht aktualisiert, da die Datenbankdatei bereits im Dokumentenordner existiert, also muss ich die App manuell löschen und neu installieren.
Meine Frage ist, wenn ein Benutzer die App aktualisiert, wird die Datenbank auch erhalten aktualisiert nach der aktuellen Version.
Anregungen sind willkommen.
Danke

    
Manish Agrawal 09.01.2012, 20:01
quelle

3 Antworten

15

Ich bin mir sicher, dass es viele Möglichkeiten gibt, dies zu tun (und viele Möglichkeiten, die besser sind als meine), aber die Art, wie ich solche Probleme behandle, ist wie folgt:

Zuerst definiere ich eine Konstante in der ersten .h-Datei der App (die zuerst geladen wird), um First-Time-Laden anzuzeigen und setze sie auf 0:

%Vor%

Jetzt müssen Sie wissen, dass ich beabsichtige, den Wert dieser Konstante im Ordner Dokumente für zukünftige Referenzen zu speichern, deshalb verwende ich eine gemeinsame Dateninstanz. In der viewDidLoad mache ich den folgenden Test:

%Vor%

Jetzt ist der Trick in deiner neuen App-Version (sagen wir 1.1). Ich ändere die FirstTime zu 2:

%Vor%

Da der gespeicherte Wert der ersten Zeit auf der Disc 1 ist, bedeutet dies, dass Sie von der oben genannten if-Anweisung abgefangen werden. Daher können Sie innerhalb des Elements alles tun, was Sie möchten. Löschen Sie die alten Tabellen und erstellen Sie sie erneut mit der neuen Formation. p>

Wieder nicht so brilliant, aber löst den Fall!

    
antf 09.01.2012, 20:27
quelle
12

Dieser Ansatz basiert auf NSUserDefaults . Die Idee ist, die vorherige App-Versionsnummer (falls vorhanden) von NSUserDefaults zu erhalten und sie mit der aktuellen Version zu vergleichen.

Der Code führt ein Datenbank-Upgrade durch, wenn die vorherige App-Version < der aktuellen Version oder die vorherige Version nil ist. Dies bedeutet, dass dieser Ansatz verwendet werden kann, obwohl die App bereits im AppStore veröffentlicht wurde. Während des App-Updates wird die Datenbank auf die neue Version aktualisiert.

Dies ist eine Plist-Datei:

Es gibt ein Array, das aus der Versionsnummer und einer Menge von SQL-Abfragen für die entsprechende Upgrade-Version besteht. Angenommen, eine frühere Version ist 1.2 und die aktuelle Version 1.4. Der Code führt das Upgrade nur von Version 1.2 auf 1.4 aus. Wenn die vorherige Version 1.3 und die aktuelle Version 1.4 ist, wird der Code nur von 1.3 auf 1.4 aktualisiert. Wenn die vorherige Version null ist, führt der Code ein Upgrade auf 1.1, dann auf 1.2, dann auf 1.3 und schließlich auf 1.4 durch.

%Vor%     
Alex 15.10.2013 10:18
quelle
6

Sie können auch .plist verwenden:

%Vor%

Und Sie können die Funktion beim Start der Anwendung oder in Ihrem View Controller aufrufen. Ihre Wahl.

hoffe es hilft.

    
Mihriban Minaz 13.08.2012 07:46
quelle

Tags und Links