#xcode #core-data #model #entity
#xcode #основные данные #Модель #сущность
Вопрос:
Я внезапно столкнулся с причудливой проблемой. У меня довольно обширная модель данных CoreData, и я скопировал ее (и содержащий ее проект) в новый проект для прототипа, над которым я работаю. Я заставил его работать и смешивал и сопоставлял новые объекты и атрибуты.
Внезапно и без видимой причины я внезапно получаю следующую ошибку:
‘NSInternalInconsistencyException’, причина: ‘ entityForName: не удалось найти объект с именем ‘DocumentLocations’ в этой модели.’
Я углубился во весь процесс создания NSManagedObjectContext , NSPersistentStoreCoordinator и NSManagedObjectModel и дошел до того, что стало совершенно ясно, что объектная модель не загружается. Я выполняю следующую команду:
_managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] сохранить];
Но когда я ищу объекты в модели после загрузки (этот метод создает модель из основного пакета, если вы передаете nil в mergedModelFromBundles), там ничего нет.
Похоже, что мой файл xdatamodel не просматривается Xcode или симулятором. И я понятия не имею, почему нет. Я собираюсь попытаться устранить проблему, явно загрузив ее через URL, но я не уверен, как это будет работать.
Какие-нибудь подсказки? Проблемы с CoreData могут быть абсолютно непонятными. Со временем мне удалось разобраться с большинством из них, но этот вызывает недоумение.
Редактировать: Алекс понял это. Мне остается только гадать, как модель была удалена из списка источников компиляции в Xcode. Хотелось бы, чтобы Xcode был более надежным. Действительно может быть PITA.
Комментарии:
1. Вы уверены, что xcdatamodel копируется в ваше приложение? Простого добавления его в проект может быть недостаточно, поэтому вам также может потребоваться проверить настройки сборки, чтобы убедиться, что он включен. Вы также можете отследить свой built .app bundle в файловой системе и открыть его, чтобы посмотреть, включены ли файлы модели данных.
2. Вау. Это было блестяще. Мой единственный вопрос: как, черт возьми, это было удалено???? Огромное спасибо. Жаль, что я не понял этого вчера. Это сэкономило бы мне огромное количество времени. Теперь я должен вернуться и отладить свои / другие / проблемы! Еще раз спасибо.
3. Добавьте файл datamodel в текущую цель сборки (боковая панель справа)
4. @MartinBrugger Да. Я сделал это, как только Алекс определил, в чем проблема. И это сработало. Я просто не понимаю, как это вообще было удалено. Насколько я могу судить, я ничего не сделал, чтобы облегчить это. Я всегда предполагаю EBSAK, но иногда Xcode будет вести себя … странно ….
5. Как мне определить, что ответ @Alex правильный?
Ответ №1:
@Alex понял это. По какой-то причине xdatamodel был удален из настроек сборки. Я добавил его обратно, и это сработало. Я действительно не понимаю, почему это было бы удалено в первую очередь. Он буквально исчез между одной сборкой и следующей.
Ответ №2:
Исправлено путем удаления приложения — из симулятора и моего iPhone.
По-видимому, база данных была добавлена без сущностей при раннем запуске. Затем, как только я добавил объекты и подключил все, начал получать ошибку, аналогичную приведенной выше…
Удаление приложения позволило воссоздать базу данных и устранить проблему.