Как создать волшебную папку.xcdatamodeld / пакет?

Недавно мне удалось (случайно, не спрашивая) удалить файлы и классы модели данных Core Data. И я был совершенно и совершенно не в состоянии снова создать файлы, которые были бы точно такими же, какими они были бы в недавно запущенном проекте, где эти файлы автоматически готовились XCode.

В новом проекте файлы будут выглядеть так:

альтернативный текст

в то время как все, что я смог создать, было:

альтернативный текст

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

Однако я понял, что в Core Data есть вещи, которые я до сих пор не совсем понимаю, очевидно.

Пожалуйста, просветите меня - что за магия в папке.xcdatamodeld? Почему Foo.xcdatamodel имеет этот зеленый значок галочки? Должна ли модель данных быть скомпилирована или обработана каким-либо образом?

Большое спасибо, ребята!

2 ответа

Решение

Комплект моделей coredata содержит все версии вашей модели. Модель с зеленой галочкой является текущей версией, данные, сохраненные в coredata, будут сохранены с использованием этой схемы. Все остальные версии модели данных предназначены для поддержки миграции базы данных, данные, хранящиеся в другой версии, могут обновляться автоматически, если в модели данных есть только небольшие изменения.

Чтобы создать комплект моделей, выберите одну модель, откройте Design меню в главном меню и выберите Data Model а также Add Model Version,

Ваше приложение аварийно завершает работу, потому что ожидает пакет данных модели с типом momd,

NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"foobar" ofType:@"momd"];

Если у вас есть только одна модель данных, она не будет скомпилирована в файл "momd". Но я забыл фактическое расширение.


В Xcode4 Add Model Version можно найти в пределах Editor главное меню.

Во время моей разработки я не мог найти сущности, которые я добавил позже. Что сработало для меня:

Деинсталлируйте приложение КАЖДЫЙ РАЗ, когда вы меняете модель данных!

Модель данных кэшируется Core Data между установками, чтобы обеспечить целостность данных. Удалите приложение с симулятора / iPhone, чтобы иметь возможность проверить ваши изменения.

PS: кто-нибудь знает, как это сделать автоматически?

Другие вопросы по тегам