Исключение при вызове insertInManagedObjectContext:

Я создаю клиент Reddit для iOS в учебных целях. Я использую CoreData, который я настроил, следуя CoreData Basics NSScreencast и Я использовал Mogenerator для создания файлов модели.

Я добавил точку останова для перехвата всех исключений, и когда я вызываю метод класса insertInManagedObjectContext:, предоставленный Mogenerator, приложение аварийно завершает работу на следующей строке:

return [NSEntityDescription insertNewObjectForEntityForName:@"AZRedditAccount" inManagedObjectContext:moc_];

Эта строка находится в модели, созданной Mogenerator (_AZRedditAccount). Когда я смотрю на представление переменных, я заметил странную строку, которую я действительно не понимаю...

Нечетная строка в представлении переменных

Что мне нужно сделать, чтобы все заработало, пожалуйста?

Изменить: вот что у меня есть в моем файле .xcdatamodeld:

Мой файл .xcdatamodeld

Изменить 2: я добавил весь проект на Github, полагая, что это поможет решить проблему: https://github.com/AzizLight/Reddit


person Robert Audi    schedule 19.06.2013    source источник
comment
Что в вашей модели, перезапускали ли вы MoG после каких-либо изменений, редактировали ли вы какие-либо из сгенерированных классов, в чем краш?   -  person Wain    schedule 19.06.2013
comment
MoG сгенерировал 2 класса: _AZRedditAccount и AZRedditAccount. Я только что добавил метод в AZRedditAccount, но он никогда не вызывается, так как приложение раньше аварийно завершало работу. Если я отключу добавленную точку останова, я получу ошибку Thread 2: signal SIGABRT. С точкой останова приложение падает в строке, показанной в моем вопросе.   -  person Robert Audi    schedule 19.06.2013
comment
@AzizLight: вы упомянули, что установили точку останова исключения, и именно здесь она останавливается. Итак, что было исключением?   -  person Peter Hosey    schedule 19.06.2013
comment
@PeterHosey На самом деле я понятия не имею, это хороший вопрос. Точка останова настроена на перехват всех исключений...   -  person Robert Audi    schedule 19.06.2013
comment
Попробуйте продолжить. Если исключение еще не распечаталось, когда вы нажмете точку останова, оно должно сделать это после одной или двух попыток продолжения.   -  person Peter Hosey    schedule 19.06.2013
comment
Вот исключение: 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'AZRedditAccount''   -  person Robert Audi    schedule 19.06.2013
comment
Измените свой вопрос, включив в него скриншот того, что у вас есть в модели управляемых объектов (.xcdatamodeld).   -  person Peter Hosey    schedule 20.06.2013
comment
@PeterHosey Я добавил скриншот по вашему запросу. Кроме того, я создал новый проект, клиент Twitter без пользовательского интерфейса (намного проще), и получил такое же исключение...   -  person Robert Audi    schedule 20.06.2013
comment
Это странно. Выберите свой .xcdatamodeld в Навигаторе проектов (⌘1) и откройте инспектор файлов (⌘⌥1). Каковы его целевые членства?   -  person Peter Hosey    schedule 20.06.2013
comment
Это название проекта, Reddit, и оно проверено...   -  person Robert Audi    schedule 20.06.2013


Ответы (1)


При отладке вы увидите, что ваш ManagedObjectContext (MOC) не имеет назначенного PersistentStoreCoordinator (PSC) и, следовательно, не является моделью. В AZRedditDataModel.m вы инициализируете PSC, но не сохраняете его (строки 84–109). Если модели нет, контекст не может создавать никаких сущностей, потому что нет «чертежа».

person Karl    schedule 20.06.2013