Core Data-не удалось загрузить оптимизированную модель по пути
Я получаю некоторые из этих отпечатков в моей консоли при запуске моего приложения из Xcode 6 в моем iPhone 6 с iOS 9 beta 5:
CoreData: не удалось загрузить оптимизированную модель по пути ' /var/mobile/Containers/Bundle/Application/0000000B-BDBC-0000-000B-0000FB00000B / Distribution.приложение / база данных.momd / база данных.Омо'
Я не могу найти что-то, связанное с этим, кто-нибудь имеет некоторое представление об этом сообщении?
4 ответов:
я столкнулся с этой проблемой и немного покопался.
Я строил с Xcode 6.4, и похоже, что ранее основные данные производили только a .мама файл в MyApp.каталог ipa momd. Этот скриншот из проекта, который видел несколько версий Xcode.
обратите внимание, что все старые версии модели имеют только a .файл mom. Я только что создал новую версию модели сегодня, и у нее есть оба .мама и .Омо файл.
похоже, что Xcode 6.4 (и, возможно, некоторые из бета-7.x версии также) не знаю, как загрузить оптимизированную версию модели данных, потому что я также получаю
2015-10-16 11:11:42.563 MyAppName[1767:599635] CoreData: Failed to load optimized model at path '/var/mobile/Containers/Bundle/Application/D887D60B-FB28-4059-8167-F573460D98F8/MyAppName.app/MyDataModel.momd/MyDataModel3_0Analytics.omo'предупреждение при компиляции с 6.4. Однако при компиляции приложения с последней версией магазина приложений Xcode (7.0.1) я не получаю этого предупреждения. Я предполагаю, что причина, по которой решение Махеша работает, заключается в том, что переписывание всей схемы создает .файл omo, который приложение ищет в пакете приложений.
решение для меня состояло в том, чтобы создать новую версию модели данных в core data, а затем построить с помощью Xcode 7. Кажется, что создание новой версии модели создает оптимизированный файл модели. В моем тестировании, хотя, даже с этим файлом, созданным Xcode 6.4, все равно возникает ошибка. Это не было пока я не попробовал его с Xcode 7.0.1, что предупреждения ушел.
это спекуляция, но я думаю, если у вас есть существующий проект и не создали новую версию модели данных и построить с Xcode 7, что .файл omo отсутствует, поэтому он выдает предупреждение, потому что не может найти файл. Однако, если вы версировали свою модель данных и строили с помощью Xcode 6.4, кажется, что более ранняя версия Xcode не делает что-то правильно с оптимизированной версией, и она не загружает ее, даже если она есть. Но это только мои наблюдения.
Я проверил, что у меня была оптимизирована модель (.файл omo) для загрузки, выполнив следующий: 1. архив проекта 2. меняю .расширением IPA для .застежка-молния 3. разверните zip-файл 4. нажмите на папку " полезная нагрузка "и щелкните правой кнопкой мыши (или cmd click) на пакете приложений в папке и выберите"Показать содержимое пакета". 5. нажмите на кнопку .каталог momd, вы должны увидеть все доступные модели управляемых объектов там.
Если все у вас есть .мамины файлы и нет .Омо файлов, то предупреждение имеет полный смысл, приложение не может открыть файл, который не не существовать.
в моем тестировании кажется, что предупреждение было только информационным. У меня никогда не было сбоев из-за этого. Похоже, что основные данные могут попытаться сначала загрузить оптимизированную модель, и если это не удастся, вернитесь к обычному.модель momd. Но это всего лишь мои предположения.
Я не уверен, что все здесь совершенно правильно, это именно то, что я наблюдал до сих пор, пытаясь отладить это. Если кто-то еще может внести свой вклад больше информации я приветствую Ваш вход.
я столкнулся с этой проблемой сегодня утром. Сделал небольшой хак, чтобы заставить его работать. Я думаю, что это как-то связано с несоответствием версий, но я не уверен.
в любом случае, если вы загружаете momd-файл, просто добавьте "/[filename].мама" в NSURL, чтобы заставить его работать.
в моем случае, я загружал файл графически.momd и в конечном итоге делает это:
// Original loading NSURL modelURL = [[NSBundle bundleForClass:[CountlyDB class]] URLForResource:@"Countly" withExtension:@"momd"]; // Small hack modelURL = [modelURL URLByAppendingPathComponent:@"Countly.mom"];обновление: Я использовал стручок, который использовал CoreData. Удаление модуля и добавление источника и т. д. от РЕПО непосредственно заставило проблему уйти.
Так что это может быть под вопросом.
Я нашел решение для этого. Я переписал всю схему, и когда я запускаю код, я избавился от этих предупреждений из основных данных.
Я предлагаю, пожалуйста, возьмите резервную копию, прежде чем вы попробуете это.
надеюсь, что это помогает вам.
Я хочу ответить людям, которые столкнулись с этим, когда писали собственный стручок, который имеет собственные модели CoreData. Вероятно, вы поместили свое определение модели в пакет (это хорошо), но вы ищете
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.

Comments