Frage

Ich verwende SQLite als Datenquelle in einem iPhone-App. Ich habe zwei Fragen in Bezug auf Anwendungsaktualisierungen.

1.) Die Daten sind alle config / nichttransaktionale. Das heißt, es ist nur lesbar. Wenn ich ein Update / config Daten hinzufügen, werde ich ein Upgrade für die App ausgeben. Wenn ein Benutzer eine aktualisierte iPhone App bekommt, tut das Original deinstalliert werden? Wenn das der Fall ist, ich bin ok, weil die neuen db Config-Daten eingesetzt werden. Wenn das nicht der Fall ist, wie kann ich Daten ersetzen?

2.) Die Daten sind config und Transaktions. der Benutzer Bedeutung kann Daten in die db speichern. Wenn der Benutzer Upgrades auf eine neue Version der App, mag ich ihre vorhandenen Daten erhalten, sondern alle Konfigurationsdaten zu ersetzen. Ich vermute, ich würde müssen innerhalb der App, dies zu erreichen gespeichert INSERT und UPDATE Skripte haben. Was ist ein effizienter Weg, um darüber zu gehen?

War es hilfreich?

Lösung

cdespinosa hat Szenario # 1 gut beschrieben, so dass ich # 2 angehen.

Ich habe das nicht auf dem iPhone noch getan, aber auf einer Desktop-Umgebung ist der einfachste Weg, dies zu umgehen ist Ihre Konfigurationsdaten in einer separaten Datenbank zu halten. Sie können ziemlich leicht auf mehrere Datenbanken anhängen. Beginnen Sie mit Ihrem Haupt-Datenbank öffnen, die wahrscheinlich die Datenbank enthalten sein sollte, die sich ändern können. Dann sqlite3_exec eine ATTACH Aussage, die wie folgt aussieht:

ATTACH 'filepath' AS config;

Von nun an können Sie etwas tun:

SELECT * FROM UserTableName;
SELECT * FROM config.ConfigurationTableName;

Es ist mein Verständnis, dass, wenn Sie die Anwendung auf die Konfigurationsdatenbank schreiben, wird eine Signaturprüfung fehlschlagen und kann nicht gestartet werden, und die Version von SQLite enthalten mit dem iPhone alt genug ist, nicht nur lesen Flagge zu unterstützen. Aus diesem Grund sollten Sie Ihre Konfigurationsdatenbank-Datei in der Sandbox kopieren und öffnen Sie diese Kopie statt der in Ihrem Paket enthalten.

(Sie können natürlich, SQL verwenden und die Werte aus einer Datenbank in eine andere kopieren. Aber wenn Sie bereits die gesamte Konfigurationsdatenbank der Sandbox kopieren ... und Sie sollten ... dann das ist nur ein Extraschritt. Bringen Sie einfach).

Ich hoffe, dass jemand anderes Ihnen weitere Details zur Verfügung stellen kann. :)

Andere Tipps

Wenn der Benutzer die App aktualisiert, wird die alte App Bundle deinstalliert und die neue App-Bundle installiert ist, aber die Benutzerdaten mit dem App-Bundle zugeordnet ist intakt.

So Ihre Entscheidungen auf eine sind), um Ihre Daten in der App-Bundle zu lassen (es automatisch ersetzt werden) oder b) einseitig kopieren Sie es in dem Benutzerdatenbereich bei der ersten Ausführung (so werden Sie absichtlich auf Upgrade ersetzen) .

Ich werde # 2 zu einer SQLite-knowledgable Person verlassen, aber Sie können das „sqlite“ Tag anstelle des „mysql“ Tag verwenden möchten, wenn es das ist, was Sie eigentlich tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top