CoreData将对象添加到多对多关系错误

时间:2014-03-07 05:28:45

标签: ios objective-c core-data object-relationships

我有一个与目标有多对多关系的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. 为什么核心数据会向Goal对象发送消息?
  2. 为什么Player初始化为nil的目标关系?它应该装满空套装吗?
  3. 我是否必须覆盖Player.h中的addGoalsObject来手动设置值?

1 个答案:

答案 0 :(得分:1)

该错误明确指出某些内容试图在entity上调用__NSCFSet方法。换句话说,0x8d90f00处的对象是某种类型的NSSet。

po 0x8d90f00的输出会误导您,因为NSSet的description方法将包含其包含的对象的描述,包含在{()}个字符中。

如果您完成po [0x8d90f00 class],则会回复NSSetNSMutableSet

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