Как создать волшебную папку.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: кто-нибудь знает, как это сделать автоматически?