Каково поведение приложения при обновлении в магазине приложений? - PullRequest
0 голосов
/ 12 августа 2011

Я хотел знать что-то, что очень беспокоит меня. т.е.

Допустим, у меня есть приложение. который находится в AppStore и работает нормально. Это приложение. имеет локальную базу данных, скажем, 5 таблиц.

Я обновляю это приложение. и добавьте еще 2 новые таблицы, что в общей сложности составит 7.

Когда пользователи предыдущих версий обновятся до более новой версии. Будет ли база данных обновлена ​​также для пользователей предыдущих версий?

Если да? тогда предыдущие данные будут удалены.

Если нет тогда код, очевидно, вызовет некоторые сбои, так как ему понадобятся новые вещи, которые не будут заменены.

Жду ваших ценных комментариев.

Ответы [ 4 ]

2 голосов
/ 12 августа 2011

Все будет зависеть от вашей базы данных. Если вы используете CoreData, вы можете перенести данные пользователей в новую базу данных и структуры. Вся информация для вашей модели данных хранится в классе .xcdatamodel для вашего проекта. Он не входит в ваш код, как другие файлы.

Часть, на которую вам нужно обратить внимание, это Идентификатор версии модели. Здесь вы сможете увеличить свою MOM, управляемую объектную модель.

Вы также можете перенести данные. Я бы рассмотрел документацию Apple по CoreData с акцентом на управление версиями и миграцию. Удачи.

Управление версиями данных Apple Core

1 голос
/ 12 августа 2011

Если база данных основана на coredata, вам нужно будет использовать .

Но если вы используете sqlite DB

Затем вы можете сохранить номер версии вашего приложения в вашей базе данных и при каждом вызове базы данных (с новой установкой / обновлением) сравнивать версию с ожидаемой версией. Если новая версия> более старая версия, то меняйте схему ( это необходимо, если бы вы изменили схему вашей базы данных ) с помощью SQL ALTER statements и обновили номер версии приложения. поэтому всякий раз, когда пользователь собирается обновить или обновить установку, он будет проверять новую версию с вашей более старой версией,

if it differ then 
    update schema, 
and if its same 
    no need to make any changes.

Если бы вы не внесли никаких изменений, связанных со схемой (например, добавив новый столбец ..), вам не нужно беспокоиться, пользователь не потеряет данные.

1 голос
/ 12 августа 2011

Содержимое каталога документов осталось без изменений. Содержимое пакета .app полностью заменено новой версией.

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

0 голосов
/ 12 августа 2011

Зависит от того, где находится база данных. Все файлы в комплекте приложений будут заменены. Файлы в каталоге «Документы» останутся без изменений, если вы не перезапишите их ... Где вы храните свою базу данных?

То, что я считаю хорошим подходом, - это поместить базу данных в пакет, а затем при первом запуске скопировать ее в каталог документов, чтобы получить доступ к RW. В обновленном приложении вы можете проверить, существует ли база данных в Документах, прочитать ее и обновить таблицы до новой версии, если нет, просто скопировать файл из комплекта в новое место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...