Я создаю некоторые новые функции в своем приложении, которое по сути является просто старым кодом, скопированным для нового типа класса. Прежде чем он создавал и показывал транспортные средства, а теперь он создает и отображает книги, однако он не ведет себя так, как ожидалось.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.
Определяет ли понятие «MyBook» в модели данных «MyBook» как свой класс? Что делает 'insertDataforTableName'? –
Ты решил это для меня! Оказывается, я никогда не указывал класс для объекта в модели данных. Будучи новичком CoreData, я думал, что все, что мне нужно было сделать, это создать сущность с именем «MyBook», и я буду установлен. Оказывается, я также должен был указать фактический класс, с которым он связан, и который имеет прекрасный смысл. Не стесняйтесь поднять ответ, и я соглашусь с ним, а затем сделаю это для вас. Или завтра я могу ответить сам. – Marcel