CoreData добавляет объект к ошибке отношения ко многим

У меня есть объект CoreData Player с отношением ко многим целям. Я пытаюсь добавить такой объект цели,

Goal *fg =(Goal*)[self.database createGoalObject]; //Custom function 

Player* player = (Player*)[NSEntityDescription insertNewObjectForEntityForName:@"Player" inManagedObjectContext:self.database.managedObjectContext];

[player addGoalsObject:fg];

Мое приложение ломается со следующей ошибкой:

'NSInvalidArgumentException', reason: '-[__NSCFSet entity]: unrecognized selector sent to instance 0x8d90f00'

po в приглашении отладки показывает, что 0x8d90f00 является объектом цели. Мои вопросы:

  1. почему основные данные отправляют сообщение объекту Goal?
  2. почему отношения целей для Player инициализируются равными нулю? Должен ли он быть пустым набором до загрузки?
  3. Нужно ли переопределять addGoalsObject в Player.h, чтобы вручную установить значение?

person Michael Rivers    schedule 07.03.2014    source источник
comment
Можете ли вы показать createGoalObject метод?   -  person Akhilrajtr    schedule 07.03.2014


Ответы (1)


В ошибке конкретно говорится, что что-то пыталось вызвать метод entity для объекта __NSCFSet. Другими словами, объект в 0x8d90f00 является NSSet некоторого типа.

Вас немного вводит в заблуждение вывод po 0x8d90f00, потому что метод NSSet description будет включать описание содержащихся в нем объектов, заключенных в символы {( и )}.

Если бы вы сделали po [0x8d90f00 class], он ответил бы NSSet или NSMutableSet.

Ваш createGoalObject возвращает набор.

person Trevor Squires    schedule 07.03.2014
comment
Ты прав. po 0x8d90f00 показывает описание содержащегося в нем объекта. po [класс 0x8d90f00] отвечает __NSCFSet. Не уверен, что я ближе к решению проблемы. - person Michael Rivers; 08.03.2014