2016-11-13 2 views
0

Я переработал базовую модель данных для своего приложения, за пределами того места, где будет работать легкая миграция. Итак, теперь у меня есть две основные модели данных в комплекте приложений, и мне нужно получить доступ к каждому отдельно (для обычной настройки данных ядра и для ручной миграции), что означает, что [NSManagedObjectModel mergedModelFromBundles:nil] не подходит/не работает. Проблема в том, что я не могу получить URL-адрес для любой модели, что мешает мне создавать их с помощью [NSManagedObjectModel alloc] initWithContentsOfURL:. Эти методы я использую, и они оба возврат NULL:URL-адрес NSManagedObjectModel равен NULL

- (NSURL *)currentModelURL{ 
    return [[NSBundle mainBundle] URLForResource:@"NewModel" withExtension:@"momd"]; 
} 

- (NSURL *)oldModelURL{ 
    return [[NSBundle mainBundle] URLForResource:@"OldModel" withExtension:@"momd"]; 
} 

В самом деле, когда я попробовать этот метод на других приложениях, даже те, с одной моделью, она никогда не возвращает модель URL. Это странно, так как предыдущая версия моего приложения просто прекратилась, получив модель через URL-адрес, используя метод выше ... не на [NSManagedObjectModel mergedModelFromBundles].

Я прочитал this и this и попробовал предлагаемые решения, которые включают в себя обеспечение модели будут добавлены в список ресурсов для копирования расслоения в фазе сборки, проверками регистрозависимых имен файлов, и суетливость с расширениями файлов в методе URLForResource. Я полагаю, что я мог бы представить совершенно новую модель в качестве новой версии старой и просто предотвратить автоматическую миграцию в постоянных параметрах хранилища ... но мой подход должен работать. Почему вдруг невозможно получить URL-адреса для моделей в комплекте приложений?

+0

Ваша информация противоречит. «Я пробую этот метод в других приложениях, даже с одной моделью, он НИКОГДА не возвращает URL-адрес модели« против »предыдущей версии моего приложения, просто отлично, получив модель через URL-адрес, используя метод выше». Возможно, добавьте ссылку github в проект минимального примера, показывая проблему. – shallowThought

ответ

0

Метод работает 100%, так что файл просто не существует;)

либо у вас есть опечатка .. или СЛУЧАЙ неправильно или ваша модель не версионируются()

компилируется! приложение и посмотрите в% APPP%/Resources /. Есть ли OldModel.momd FOLDER?

+0

Использование расширения .mod (не-версией модели) вместо .momd (versioned) оказалось таким. Думал, что это проверил, но, видимо, нет. – Henry95