[ios] Основные данные - Не удалось загрузить оптимизированную модель по пути


Answers

Сегодня утром я столкнулся с этой проблемой. Сделал небольшой взлом, чтобы заставить его работать. Я думаю, что это связано с несоответствием версий, но я не уверен.

Во всяком случае, если вы загружаете файл momd, просто добавьте в NSURL «/[filename].mom», чтобы заставить его работать.

В моем случае я загрузил файл Countly.momd и в итоге сделал это:

// Original loading
NSURL modelURL = [[NSBundle bundleForClass:[CountlyDB class]] URLForResource:@"Countly" withExtension:@"momd"];

// Small hack
modelURL = [modelURL URLByAppendingPathComponent:@"Countly.mom"];

Обновление: я использовал POD, который использовал CoreData. Удаление контейнера и добавление источника и т. Д. Из репо сразу заставило проблему уйти.

Так что это может быть проблема.

Question

Я получаю некоторые из этих отпечатков на моей консоли при запуске моего приложения из Xcode 6 в своем iPhone 6 с iOS 9 beta 5:

CoreData: не удалось загрузить оптимизированную модель по пути '/var/mobile/Containers/Bundle/Application/0000000B-BDBC-0000-000B-0000FB00000B/Distribution.app/database.momd/database.omo'

Я не могу найти что-то, связанное с этим, может ли кто-нибудь понять это сообщение?




Я хочу ответить тем, кто столкнулся с этим, когда писал собственный блок, который имеет собственные модели CoreData. Вероятно, вы поместили определение модели в комплект (это хорошо), но вы momd файл momd в неправильном комплекте.

Допустим, вы определили свой пакет в podspec следующим образом:

'MYPodBundle' => [
    'Model/*.{xcdatamodeld,xcdatamodel}'
]

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

NSURL *bundleURL = [[NSBundle bundleForClass:[MYEntity class]] URLForResource:@"MYPodBundle" withExtension:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithURL:bundleURL];
NSString *modelPath = [bundle pathForResource:@"MYCoreDataModel" ofType:@"momd"];
NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:[NSURL fileURLWithPath:modelPath]];

Таким образом, вы можете продолжить создание стека CoreData.

// Это может быть немного offtopic, потому что вы не пишете собственный блок, но ваш ответ находится на верх Google.




Related