我有一个与目标具有一对多关系的 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 是一个目标对象。我的问题是:
- 为什么核心数据向目标对象发送消息?
- 为什么 Player 的目标关系初始化为 nil?在加载之前它不应该是一个空集吗?
- 是否必须覆盖 Player.h 中的 addGoalsObject 才能手动设置值?
最佳答案
该错误特别说明了某些东西试图在 __NSCFSet
上调用 entity
方法。换句话说,0x8d90f00
处的对象是某种类型的 NSSet。
您被 po 0x8d90f00
的输出稍微误导了,因为 NSSet 的 description
方法将包含它所包含的对象的描述,包装在 {(
和 )}
字符。
如果你完成了 po [0x8d90f00 class]
它会响应 NSSet
或 NSMutableSet
。
您的createGoalObject正在返回一个集合。
关于ios - CoreData 将对象添加到一对多关系错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22242248/