Приложение использует статический sqlite (исходные данные) из каталога bundle в качестве постоянного хранилища для Coredata. Sqlite имеет 7 таблиц, из которых одна таблица изменена добавлением дополнительного столбца/поля. Как я могу заставить coreData понять, что постоянное хранилище (хранилище) изменено, и ему нужно принять новое обновление? Есть ли какая-нибудь концепция модели для sqlite, как мы делаем для coredata?iOS application coreData с PersistentStore как статический sqlite Перенос данных?
ответ
Если вы просто добавить атрибуты объекта, вы можете использовать CoreData легкую миграцию предложить на Apple documentation
NSError *error = nil;
NSURL *storeURL = <#The URL of a persistent store#>;
NSPersistentStoreCoordinator *psc = <#The coordinator#>;
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
BOOL success = [psc addPersistentStoreWithType:<#Store type#>
configuration:<#Configuration or nil#> URL:storeURL
options:options error:&error];
if (!success) {
// Handle the error.
}
Для тех, кто не хочет копаться в документации и ищет быстрое решение :
1> Откройте файл .xcdatamodeld
2> нажмите на редактор
3> выберите Добавить модель вариант ...
4> Добавить новую версию модели (новую группу datamodels добавляемой)
5> выберите основной файл, откройте инспектор файл (правая панель)
6> и под версированной модель ядра данных выбрать новую версию модели данных для текущей модели данных
7> Это не все) следует выполнять так называемой «свет миграции».
8> Перейти к вашему AppDelegate и найти, где persistentStoreCoordinator создаются
9> Найти эту строку, если ([_ persistentStoreCoordinator addPersistentStoreWithType: NSSQLiteStoreType конфигурации: ошибка ноля:: ноль URL: опции storeURL & ошибки]!)
10> Заменить нулевые варианты с @ {NSMigratePersistentStoresAutomaticallyOption: @YES, NSInferMappingModelAutomaticallyOption: @YES} (фактически предоставленные в комментировал код в этом методе)
Здесь вы идете, получайте удовольствие! P.S. Это относится только к легкой миграции. Чтобы ваша миграция квалифицировалась как легкая миграция, ваши изменения должны ограничиваться этой узкой полосой:
Добавить или удалить свойство (атрибут или взаимосвязь).
Сделать неоплачиваемое имущество необязательным.
Сделать необязательный атрибут nonoptional, если вы предоставляете значение по умолчанию.
Добавить или удалить объект.
Переименовать недвижимость.
Переименовать объект.
Спасибо очень очень г-н Четан Касундра, этот ответ мне очень помог –
Смотрите этот вопрос вы получите ответ я надеюсь http://stackoverflow.com/questions/5995231/example-or-explanation-of-core-data-migration-with-multiple-passes – jogshardik