Ich habe eine Situation, in der ich Änderungen an einer SQLite-Datenbank für die nächste Version meiner App vorgenommen habe, wegen der Änderungen an der SQLite-Datenbank habe ich auch Änderungen an Code vorgenommen, der daraus liest, primär Hinzufügen von Spalten zur Abfragemethode.Replace File in Documents Directory
Aufgrund der Änderungen muss der Benutzer bei der nächsten Aktualisierung der Anwendung die neue Datenbank verwenden, damit er funktioniert. In der vorherigen Version meiner App habe ich eine Datenbank mit dem Namen File.sqlite. Wenn der Benutzer die Anwendung herunterlädt, wird diese Datei in ihrem Dokumentenordner gespeichert. Jetzt habe ich die Anwendung mit einer neuen Datei, aber dem gleichen Namen File.sqlite, die mehr Spalten und solche in ihm hat, aber wenn ich die Anwendung (keine Neuinstallation) aktualisiert, dass neue Datei ersetzt nicht die alte Datei.
Wie kann ich sicherstellen, dass, wenn der Benutzer die Anwendung aktualisiert, die Datei ersetzt/aktualisiert wird?
Wie jetzt von Ich verstehe, dass ich die folgende verwenden, um den Pfad der alten Datei in Dokumentenverzeichnis zu erhalten:
//Reference the path to the documents directory.
NSString *documentDir =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
//Get the path of old file.
NSString *filePath = [documentDir stringByAppendingPathComponent:@"File.sqlite"];
Ist die neue Datei einen anderen Namen haben, und ich verweisen nur die Neuer Name im Code? Das scheint mir albern, ich muss in der Lage sein, eine Kopie des alten zu machen und die neue Version zu benutzen?
Auch ich bin mir nicht einmal sicher, ob dies der beste Ansatz ist, um das zu tun, was ich versuche, auch wenn Sie einen besseren Weg kennen, beraten Sie bitte.
Sicherlich liegt Ihre Antwort in [diesen Suchergebnissen] (http://stackoverflow.com/search?q=%5Bios%5D+sqlite+schema+change). – rmaddy
@rmaddy Ich hätte meine Frage nicht gestellt, wenn ich eine Lösung finden könnte, ich habe versucht, diese Lösung zu betrachten. –
Es gibt [diese] (http://stackoverflow.com/questions/989558/best-practices-for-in-app-database-migration-for-sqlite?lq=1), [diese] (http://stackoverflow.com/questions/10136256/updating-new-version-to-app-store-with-different-sqlite-db-structure), [dieser] (http://stackoverflow.com/questions/16284430/how -a-sqlite-db-in-ios) und [diese] (http://stackoverflow.com/questions/17369603/how-to-detect-the-app-version-has- geändert/17375294? s = 3 | 0.7471 # 17375294). – rmaddy