Цель C - Обновление NSManagedObject - PullRequest
2 голосов
/ 16 января 2012

Я недавно создал приложение, которое использует Базовые данные для хранения информации.Сегодня я внес несколько изменений в модель данных и заново создал файлы кода, для которых я изменил модели данных.Когда я снова попытался запустить приложение на своем iPad, он пожаловался на конфликт между хранилищем данных, которое в данный момент находится на iPad, и тем, к которому я пытаюсь получить доступ (я добавил одно поле к одному из объектов).Я решил эту проблему, полностью удалив приложение с моего iPad и заменив его новой версией.

Мне просто интересно, каковы будут последствия для пользователей, использующих приложение в настоящее время, когда я выпущу обновление?Будут ли они также потерять все свои данные?Будут ли они сталкиваться с этим ужасным сообщением об ошибке или сбоем?Или Core Data магически обновляет хранилище данных для меня?

С уважением, EZFrag

Ответы [ 2 ]

4 голосов
/ 16 января 2012

См. Руководство по миграции основных данных Apple по адресу: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/Introduction.html.

"Вы можете открыть только Базовое хранилище данных, используя модель управляемого объекта, использованную для его создания. Поэтому изменение модели сделает его несовместимым с (и поэтому невозможно открыть) ранее созданные хранилища. Если вы меняете модель, вам необходимо изменить данные в существующих хранилищах на новую версию - изменение формата хранилища называется миграцией.

Для переносахранилище, вам нужна как версия модели, используемой для ее создания, так и текущая версия модели, на которую вы хотите выполнить миграцию. Вы можете создать версионную модель, которая содержит более одной версии модели управляемого объекта. Внутри версионной моделиВы помечаете одну версию как текущую версию. Затем Core Data может использовать эту модель для открытия постоянных хранилищ, созданных с использованием любой из версий модели, и переноса хранилищ в текущую версию. Однако, чтобы помочь Core Data выполнить миграцию, вы можетедолжны предоставить информацию о том, как карта отодна версия модели в другую.Эта информация может быть в форме подсказок внутри самой версионной модели или в отдельном файле модели отображения, который вы создаете. "

0 голосов
/ 16 января 2012

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

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

Смотрите это http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/Introduction.html

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