2010-10-14 4 views
4

Я тянул свои волосы последние несколько часов, пытаясь понять, почему insertNewObjectForEntityForName возвращает NSManagedObject, хотя я пытаюсь вставить объект своего типа.insertNewObjectForEntityForName возвращает неправильный тип

вещей я проверил тысячу раз:

  • имени класса устанавливается в правильное значение в диаграмме конструктора
  • Entity имеет много-ко-многим с другим объектом, создавая что другие произведения сущностей как и ожидалось, и я получаю правильно напечатанную продукцию, я клянусь, что они идентичны

Каковы возможные причины, по которым это может произойти? Я не знаю, где искать здесь, и Google не помогло :(

EDIT (ПОСТАНОВИЛИ):

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

Я все еще смущен тем, почему происходило, хотя оно теперь решено

+1

Чистая перестройка часто решает неожиданные проблемы с основными данными. Система сборки как-то испорчена при изменении моделей данных. –

ответ

0

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

1

У меня было это тоже, но это была не коррумпированная модель, которая была фактической опечаткой в ​​определении моей сущности в файле модели.

В основном сущности и атрибуты были правильными, но «ClassName» для моего объекта имел опечатку. Это приводит к тому, что Core Data имеет достаточную информацию для фактического чтения и записи объекта, но он не смог создать экземпляр класса (поскольку на самом деле он не существовал с именем, которое я опечатал)

7

Я закончил в аналогичной ситуации с другим решением. Посредством серии неудачных событий (столкновение пространства имен принудительно меняло одно из моих сущностей), я оказался с настраиваемой сущностью, у которой его класс был установлен по умолчанию для NSManagedObject в модели данных, а не для соответствующего пользовательского подкласса.

Итак, перед тем, как вы перейдете к проблеме удаления всей вашей модели данных и ее восстановления (как я и сделал, слава богу за ветвление git), просто проверьте, правильно ли установлен ваш класс.

+0

Это решение для меня. Большое спасибо! Я был так потрясен этим. – sudo

+0

OMG! Это сработало и для меня! И это объясняет проблему, с которой я столкнулся с генерацией .h и .m. –

0

У меня такая же ситуация сегодня после удаления некоторых исходных файлов подклассов NSManagedObject и их регенерации из редактора моделей в Xcode.

Я изучил файл project.pbxproj и обнаружил, что существуют некоторые несогласованные пары файлов с исходным кодом (возможно, ошибка Xcode?).

Мне удалось исправить это, удалив все модели из проекта и добавив их снова (и я также удалил некоторые ссылки на файл из project.pbxproj вручную).

Благодарим за подсказку.

0

У той же проблемы сегодня.После 2 часов вытягивания волос обнаружилось, что я просто не добавляю исходный файл класса сущности в цель!