Обновления существующего приложения - PullRequest
0 голосов
/ 29 июня 2009

У меня есть приложение, использующее sqlite. При первом запуске я копирую файл .db в NSDocumentDirectory (чтобы я мог обновлять его). В более поздних версиях я планирую добавить новые данные в эту базу данных. Как я могу убедиться, что при каждом обновлении приложения (но не при каждом запуске приложения) самая новая копия этой БД будет копироваться в NSDocumentDirectory?

Спасибо

-Konstantin

Ответы [ 2 ]

2 голосов
/ 29 июня 2009

У меня есть константа, которую я увеличиваю с новыми сборками, скажем, kDatabaseVersion.

При запуске я проверяю следующее:

  • Существует ли БД в каталоге документов? Если нет, скопируйте его. Это, вероятно, означает, что произошел первый запуск.

  • Если БД существует, проверьте версию по константе с записью NSUserDefaults с тем же ключом. Если константа больше, скопируйте базу данных. Если нет, не надо. Обновите NSUserDefaults соответственно.

Конечно, если база данных также содержит данные ваших пользователей, вам нужно решить, как перенести их в новое хранилище данных. Если вы используете базовые данные, вы можете даже рассмотреть несколько постоянных хранилищ для разделения пользовательских данных и данных по умолчанию.

0 голосов
/ 29 июня 2009

Сохраните номер версии базы данных в вашем приложении. Когда приложение запустится, проверьте, существует ли база данных в каталоге документов. Если нет, скопируйте его в документ. каталог. Если база данных уже существует, сравните номер версии базы данных из вашего приложения с номером, сохраненным в таблице базы данных. если числа равны, все в порядке, в противном случае вам придется «обновить» существующую базу данных (изменить схему базы данных или что-то еще). Таким образом, вы можете обновить базу данных с каждой версией вашего приложения. Код простой функции "CheckForDatabaseUpdate", которая содержит всю необходимую логику. И создайте функцию «UpgradeToDatabaseVersion» с номером версии в качестве параметра. Эта функция будет обрабатывать обновление схемы базы данных с одной версии на другую.

...