У меня есть приложение Core Data, и я выполняю миграцию (обновление) модели основных данных. Каждый раз, когда я создаю новую версию, я создаю модель сопоставления для каждой версии.
Сейчас у меня 16 версий, и у меня есть картографические модели, которые выглядят так:
1to2.xcmappingmodel
2to3.xcmappingmodel
3to4.xcmappingmodel
...так далее. до 16
Это работает нормально, но проблема возникает, когда один пользователь имеет файл данных с версией 10 и обновляет приложение с версией 16. В некотором смысле я думал, что Core Data автоматически обновится с 10 до 16, но обнаруживается ошибка, что говорит "Отсутствует модель картирования". Чтобы убедиться, что модели сопоставления верны, я обновляю их до каждой версии одну за другой (10–11, 11–12 и т. Д.), И это сработало ...
Вот мой код.
Я указываю версию модели с этим кодом:
NSBundle *modelWrapper = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"TaskApp_DataModel" ofType:@"momd"]];
NSString *modelPath = [modelWrapper pathForResource:@"TaskApp_DataModel 16" ofType:@"mom"];
NSLog(@"%@",modelPath);
managedObjectModel = [[NSManagedObjectModel alloc]initWithContentsOfURL:[NSURL fileURLWithPath:modelPath]];
И здесь я определяю опцию Автоматическая миграция:
NSURL *url = [NSURL fileURLWithPath: [applicationSupportDirectory stringByAppendingPathComponent: @"storedata-sql"]];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:url
options:dict
error:&error]){
Кто-нибудь знает, как обновить это?
Спасибо.