Как создать волшебную папку/пакет .xcdatamodeld?
Недавно мне удалось (случайно, не просить) удалить файлы и классы данных Data Data Data Data. И я был полностью и совершенно неспособен создать файлы снова, чтобы быть точно такими же, как они были бы в недавно запущенном проекте, где эти файлы будут автоматически подготовлены XCode.
В новом проекте файлы выглядят следующим образом:
![alt text]()
пока все, что мне удалось создать, было:
![alt text]()
Я уже упоминал, что приложение больше не работает? Он разбился, сказав, что модель не должна быть nil
. Проблема была решена путем запуска нового проекта с тем же именем и перетаскивания файлов на старый - не самое элегантное решение, я полагаю.
Я понял, что есть вещи о Core Data, которые я все еще не совсем понимаю, очевидно.
Пожалуйста, просветите меня - какая магия за папкой .xcdatamodeld? Почему функция Foo.xcdatamodel имеет зеленый флажок? Нужно ли компилировать или обрабатывать datamodel каким-то образом?
Спасибо, много парней!!!
Ответы
Ответ 1
комплект модели coredata сохраняет все ваши версии модели.
Модель с зеленой галочкой - текущая версия, данные, сохраненные в coredata, будут сохранены с использованием этой схемы.
Все другие версии данных для поддержки миграции базы данных, данные, хранящиеся в другой версии, могут быть автоматически обновлены, если в модели данных есть только небольшие изменения.
Чтобы создать модельный комплект, вы выбираете одну модель, откройте меню Design
в главном меню и выберите Data Model
и Add Model Version
.
Ваше приложение терпит крах, потому что ожидает набор данных с типом momd
.
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"foobar" ofType:@"momd"];
Если у вас есть только один Datamodel, он не компилируется в файл "momd". Но я забыл о фактическом расширении.
В Xcode4 Add Model Version
можно найти в главном меню Editor
.
Ответ 2
Во время моего развития я не смог найти объекты, которые я добавил позже.
Что сработало для меня:
Удалите приложение каждый раз, когда вы меняете модель данных!
Модель данных кэшируется базовыми данными между установками, чтобы убедиться, что целостность остается в такте. Удалите приложение из симулятора /iPhone, чтобы проверить свои изменения.
PS: Кто-нибудь знает, как это сделать автоматически?