Как сохранить данные в базе данных SQLite на iPhone при обновлении версии приложения?

У меня есть база данных SQLite в первой версии моего приложения iPhone (которое находится в магазине приложений). Теперь я хочу развернуть вторую версию приложения, в которой также есть SQLite db.

Я понял, что после обновления база данных SQLite удаляется, а затем добавляется новая. Я не хочу, чтобы это произошло, поскольку эта база данных содержит некоторую информацию, которую пользователь сохранил. Было бы неплохо, если он будет удален после обновления.

Вопрос: как перенести данные из старой базы данных SQLite (старой версии) в новую? И как я могу проверить процесс обновления версии, который произошел в App Store?

Любая помощь будет принята с благодарностью. Спасибо.

Ответ 1

Ответ: реализовать управление версиями в своем приложении с самого начала: -)

В этом случае вы можете считать приложение без информации о версии версией 1. Что я буду делать, так это хранить версию базы данных где-то (возможно, внутри самой базы данных). Когда база данных открыта, проверьте ее версию на версию, которую ожидает приложение, затем внесите какие-либо изменения схемы по мере необходимости и обновите номер сохраненной версии.

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

Чтобы протестировать обновление, просто начните с новой копии предыдущей версии на вашем устройстве. Затем установите новый (сборка и запуск будут выполнены отлично). Вы сохраняете старые версии своего приложения, верно?

Ответ 2

Это не то, что я лично тестировал, но, насколько мне известно,

  • На ваш первый вопрос был дан ответ, и, тем не менее, вам не повезло, если ваш sqlite db не скопирован в каталог Documents, поскольку весь пакет приложений будет заменен при обновлении. Предполагая, что christo16 прав, и предположив, что ваше уже отправленное приложение не копирует db в документы, вы можете отправить промежуточную версию, которая это сделает. Тогда просто нужно убедиться, что критическая масса пользователей установила промежуточную версию перед развертыванием обновлений db.
  • Re: тестирование. Вы должны иметь возможность протестировать поведение обновления, установив свою сборку через iTunes, а не через Build and Run. Прошло некоторое время с тех пор, как я попробовал... следуя инструкциям для сборки ad hoc, нужно сделать трюк, хотя это может быть излишним.