Причина NSInternalConsistencyException + entityForName: не удалось найти NSManagedObjectModel для имени объекта - PullRequest
1 голос
/ 12 марта 2011

Использовал конструктор интерфейса для создания контроллера представления и передачи ему NSManagedObjectContext, делая все идеально. Но я продолжал получать ошибку, как будто я ничего не настраивал.

Я публикую это, потому что ни один другой вопрос не решает эту проблему, но надеюсь, что другие выиграют.

После использования жесткого кода вместо IB, я заметил, что представление контроллера корневого представления было вызвано перед делегатом приложения. Это полностью испортило предполагаемый порядок. NSLog показал мне, что сейчас на первом месте.

Много раз я сильно сомневался в том, что Apple не использует английскую грамматику, или что я поступаю так, как ожидал бы любой нормальный человек. Подобно тому, как в магазине приложений iPad не отображаются полные имена в связанных программах, это одна из тех вещей.

Так что да, если вы используете NIB, закодируйте часть addSubview вместо ссылки в Интерфейсном Разработчике. Даже если вы связываете это правильно, жестко закодируйте контроллер корневого представления. Или кто-то с большим опытом может опубликовать другое решение ... Я мог бы быть выключен или даже выключен, но если это так ... обвинить Apple в предположении, что любой, кто читает учебники, всегда должен будет делать это "так, как написано в документации".

Базовая анимация страдает от той же недостающей информации и ссылок. Хорошо, теперь я ругаю об Apple. Если эта проблема была решена, тем не менее, я прошу прощения, но все, что я нахожу, является опечатками и "не связыванием". Я сделал все, что упомянул, и это все еще не сделал, что было очень запутанным.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 26 июня 2013

У меня та же проблема. Что странно, так это то, что на iOS 5 у меня проблема, а на iOS 6 нет.

Некоторые раскопки показали, что в iOS 6 контекст, кажется, существует, когда я ожидаю его, когда в iOS 5 он пустой (отсюда и сообщение об ошибке). В моем случае я передавал контекст через segue. Обходной путь должен был проверить, был ли контекст нулевым, и если это было так, то запросите это определенно. Сделал трюк.

Должно быть, об этом Apple знала, поскольку она изменилась для iOS6.

0 голосов
/ 13 марта 2011

Я заметил, что представление контроллера корневого представления было вызвано до делегата приложения ...

Это невозможно.application:didFinishLaunchingWithOptions: делегата приложения должен быть вызван до того, как активируется любое представление.Общее окно отображения принадлежит делегату приложения, поэтому, если делегат приложения не загружен, нет окна для загрузки представлений.

Я создал десятки приложений с IB, Core Data и многими типами представлений и иерархий представлений и никогда не сталкивался с загрузкой представлений перед делегированием приложения.Вы что-то упустили.

Ошибка:

NSInternalConsistencyException причина + entityForName: не удалось найти NSManagedObjectModel для имени объекта

... либоозначает, что ваша модель managedObject не загружена или что вы неправильно указали имя объекта.Похоже, ваш стек основных данных либо не загружается, либо вы неправильно обращаетесь к нему.

...