obwohl das eine ältere Frage ist, aber ich habe dafür keine passende Lösung gefunden. Deshalb bitte ich um Hilfe zu diesem Thema.
Ich habe eine iPhone-App, die eine sqlite db im Resource-Ordner enthält. Jetzt, wenn ich es von iTunes auf die neuere Version aktualisiere, gehen alle Daten in der Datenbank verloren.
Angenommen, ein Benutzer hat 1000 Einträge in die Datenbank eingegeben. Wenn er also seine Daten verliert, wenn er die Anwendung von iTunes aktualisiert, wird er die Version seiner App definitiv nicht verbessern. Er sollte dann zuerst benachrichtigt werden, dass "Sie alle Ihre vorherigen Daten verlieren" oder die vorherigen Daten sollten in der neuen Version unverändert bleiben.
Welche Vorgehensweise sollte ich in der neuen Version befolgen, um alle alten Daten in der neuen Version zu behalten ...?
Ich kann die vorherigen Versionen nicht ändern. Also muss ich etwas in der neuesten Version machen, so dass alle Daten von der vorherigen Version in dieser neueren Version aufbewahrt werden sollten.
Dies ist ein Notfallproblem. Benutzer aktualisieren die Anwendung & amp; Sie verlieren ihre zuvor gespeicherten Daten in der Datenbank. Auch sie werden nicht benachrichtigt, dass sie alle Daten verloren haben. !
Wenn Sie keine Core-Daten verwenden, können Benutzerdaten nur gespeichert werden, indem Sie Ihre Datenbank im Verzeichnis Dokumente des Benutzers sowie im Verzeichnis Bibliothek speichern.
Dies sind auch die einzigen Verzeichnisse, auf die Ihre App schreibbar ist. Wenn Sie eine "leere" Datenbank in Ihren Ordner Ressourcen aufgenommen haben, wird sie in das Paket kopiert. Von dort aus müssen Sie prüfen, ob die Datenbank im Verzeichnis Dokumente vorhanden ist. Wenn nicht, kopieren Sie sie aus dem Paket.
Nur so können Sie sicherstellen, dass Daten bei App-Upgrades geschützt sind.
Wenn der Benutzer sein Gerät nicht sichert, die App deinstalliert und dann die App erneut installiert, sind die Daten verschwunden.
Wenn der Benutzer nicht benachrichtigt wird, verliert er seine Daten. Das einzige, was den Benutzer über den Verlust von Daten auffordert, ist, wenn er die App vom Gerät entfernt oder eine Möglichkeit zur Benachrichtigung der Benutzer implementiert Benutzer von Datenänderungen.
Wo speichern Sie Ihre Daten? Sie sollten es in Documents
Verzeichnis Ihres Anwendungspakets tun. Andere Verzeichnisse als Documents
und Library
werden bei App-Updates nicht beibehalten (Während der Aktualisierung wird Ihre App tatsächlich in einem anderen Verzeichnis installiert und ihre Daten werden zurückkopiert).
Hier finden Sie einen guten Überblick über das iOS-Dateisystem: iOS-Standardverzeichnisse: Wo Dateien residieren (Dateisystem-Programmierhandbuch)
Sie können eine separate SQL-DB-Datei für Benutzerdaten verwenden, die Sie nicht verlieren sollten.
PS: Wenn ein neues Update vom App Store heruntergeladen wird. iOS verschiebt alte Dateien in einen anderen Ordner. Wenn der Download und die Installation abgeschlossen sind, verschieben Sie alte Dateien in den Anwendungsordner.
Wenn Sie die Versionsnummer auf Ihre Datenbank gesetzt hätten, könnte Ihr iphone leicht gehandhabt worden sein, speichern Sie Ihre Versionsnummer in Ihrer Datenbank und wenn die Datenbank aufgerufen wird, vergleichen Sie die Version mit die erwartete Version
Wenn new version > older version
das Schema ändert (dies ist erforderlich, wenn Sie das Schema Ihrer Datenbank geändert hätten), indem Sie SQL ALTER-Anweisungen verwenden und die Versionsnummer der App aktualisieren.
Wenn der Benutzer also eine Aktualisierung oder Neuinstallation durchführt, wird er die neue Version mit Ihrer älteren Version prüfen, wenn diese sich von der des Aktualisierungsschemas unterscheidet und wenn keine Änderungen vorgenommen werden müssen.
Wenn Sie keine schemabezogenen Änderungen vorgenommen hätten (z. B. Hinzufügen einer neuen Spalte ..) dann müssen Sie sich keine Sorgen machen, Benutzer wird nicht verlieren die Daten.