2010-12-15 3 views
2

Я планирую создать приложение iphone, которое использует CoreData. Могут быть улучшения, добавленные позже как новые версии приложения. Мой вопрос: При использовании CoreData, какие факторы следует учитывать, чтобы убедиться, что пользователь обновляет версию, его предыдущие данные остаются нетронутыми? Как я слышал, мы должны сохранить имя файла .sqlite таким же. Какие еще факторы следует учитывать при выпуске приложений Core Data?iPhone приложение с CoreData

спасибо.

ответ

2

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

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

  • Простое добавление нового атрибута
  • не-необязательный атрибут становится опциональный
  • Необязательный атрибут становится не- по желанию, и определяющее значение по умолчанию

переименовании объект или атрибут, также легко и почти автоматически.

Все, кроме этого - новые или удаленные объекты, новые или удаленные или измененные отношения - более волосатый. Это не невероятно сложно, но это определенно больше работы, с большим количеством возможностей для отказа.

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

Стоит обратить внимание.

+0

Итак, что вы говорите, если я выпущу версию 1.0 и в версии 1.1, если я сделаю небольшие обновления для моего CoreData (.xcdatamodel), такие как добавление/удаление/переименование атрибутов, пользователь не пострадает при загрузке v1.1 и что его сохраненные данные из версии 1.0 должны оставаться неповрежденными. Это верно? – hmthur 2010-12-16 04:39:42

1

Одна вещь, которую мы сделали, - это управлять двумя отдельными базовыми базами данных. Во-первых, базовая база данных «только для чтения», которая поставляется с обновлениями приложений (при условии, что вы хотите отправлять данные с помощью приложения, если нет, то не беспокойтесь об этой части). Во-вторых, локальная база данных данных (хранилище данных), которая хранится на телефоне, который сначала заполняется данными из первого, а затем добавляется пользователем или с обновлениями с сервера, которым вы управляете. Это второе хранилище основных данных может оставаться постоянным между обновлениями.

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

Here также являются дополнительными ресурсами для подготовки данных ядра, имеется множество более конкретных примеров данных ядра на SO.

Наконец, если вы планируете значительно добавить/изменить свой основной хранилище данных, я бы предложил изучить SQLite.Это легче изменить с помощью обновлений (по моему опыту), чем перенос существующего хранилища основных данных в новую схему, особенно если схема часто меняется.

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