2015-04-28 4 views
0

Приложение использует статический sqlite (исходные данные) из каталога bundle в качестве постоянного хранилища для Coredata. Sqlite имеет 7 таблиц, из которых одна таблица изменена добавлением дополнительного столбца/поля. Как я могу заставить coreData понять, что постоянное хранилище (хранилище) изменено, и ему нужно принять новое обновление? Есть ли какая-нибудь концепция модели для sqlite, как мы делаем для coredata?iOS application coreData с PersistentStore как статический sqlite Перенос данных?

+0

Смотрите этот вопрос вы получите ответ я надеюсь http://stackoverflow.com/questions/5995231/example-or-explanation-of-core-data-migration-with-multiple-passes – jogshardik

ответ

0

Если вы просто добавить атрибуты объекта, вы можете использовать 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. 
} 
10

Для тех, кто не хочет копаться в документации и ищет быстрое решение :

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, если вы предоставляете значение по умолчанию.

Добавить или удалить объект.

Переименовать недвижимость.

Переименовать объект.

+0

Спасибо очень очень г-н Четан Касундра, этот ответ мне очень помог –