2015-10-07 3 views
0

Я создаю некоторые новые функции в своем приложении, которое по сути является просто старым кодом, скопированным для нового типа класса. Прежде чем он создавал и показывал транспортные средства, а теперь он создает и отображает книги, однако он не ведет себя так, как ожидалось.insertDataforTableName возвращает неправильный тип объекта

Я хочу сохранение данных, так вот код, который создает новый ManagedObject, который должен возвращать указатель на объект:

vehicle = [[MyCoreDataManager sharedManager] insertDataforTableName:@"MyVehicle"]; 

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

Теперь я хочу иметь то же точное расположение, за исключением объекта MyBook. Однако, когда я бегу:

book = [[MyCoreDataManager sharedManager] insertDataforTableName:@"MyBook"]; 

выше строка кода возвращает объект типа NSManagedObject, который неправильно, потому что я не могу получить доступ к MyBook методы, потому что это NSManagedObject и не MyBook. Я даже попробовал кастинг, но он не работает. Тот факт, что это NSManagedObject, а не MyBook, вызывает мое приложение сбой с ошибкой unrecognized selector sent to instance, потому что я пытаюсь вызвать метод, который не распознается объектом во время выполнения. Ваши мысли приветствуются.

Мое понимание проблемы в том, что каким-то образом класс MyBook не объявлен должным образом или имеет некоторые тонкие проблемы в его .h или .m-файле, что заставляет его не связываться во время выполнения. Или какая-то проблема с определением сущности .xcdatamodeld.

+2

Определяет ли понятие «MyBook» в модели данных «MyBook» как свой класс? Что делает 'insertDataforTableName'? –

+0

Ты решил это для меня! Оказывается, я никогда не указывал класс для объекта в модели данных. Будучи новичком CoreData, я думал, что все, что мне нужно было сделать, это создать сущность с именем «MyBook», и я буду установлен. Оказывается, я также должен был указать фактический класс, с которым он связан, и который имеет прекрасный смысл. Не стесняйтесь поднять ответ, и я соглашусь с ним, а затем сделаю это для вас. Или завтра я могу ответить сам. – Marcel

ответ

0

Роб Mayoff было правильно спросить:

определение сущности «MyBook» в модели данных Указано ли «MyBook» в своем классе?

Потому что в этом случае это не так. Если вы хотите создать новый объект в своей модели данных, обязательно укажите фактический класс, с которым он связан с правой панелью инструментов. Очень легко пропустить этот шаг, если вы спросите меня.

Смежные вопросы