2009-06-28 2 views
0

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

Благодаря

-Konstantin

ответ

2

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

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

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

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

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

0

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

Смежные вопросы