0

我有一个与目标有一对多关系的 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 是一个 Goal 对象。我的问题是:

  1. 为什么核心数据向目标对象发送消息?
  2. 为什么 Player 的目标关系初始化为零?在加载之前它不应该是一个空集吗?
  3. 我是否必须覆盖 Player.h 中的 addGoalsObject 才能手动设置值?
4

1 回答 1

1

该错误明确表示某些东西试图entity__NSCFSet. 换句话说,对象0x8d90f00是某种类型的 NSSet。

po 0x8d90f00由于 NSSet 的description方法将包括它所包含的对象的描述、包装{()}字符,因此您会稍微误导您的输出。

如果你这样做了po [0x8d90f00 class],它会响应NSSetNSMutableSet

您的 createGoalObject 正在返回一个集合。

于 2014-03-07T18:15:31.313 回答