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

标签 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 是一个目标对象。我的问题是:

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

最佳答案

该错误特别说明了某些东西试图在 __NSCFSet 上调用 entity 方法。换句话说,0x8d90f00 处的对象是某种类型的 NSSet。

您被 po 0x8d90f00 的输出稍微误导了,因为 NSSet 的 description 方法将包含它所包含的对象的描述,包装在 {()} 字符。

如果你完成了 po [0x8d90f00 class] 它会响应 NSSetNSMutableSet

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

关于ios - CoreData 将对象添加到一对多关系错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22242248/

相关文章:

ios - 当 TextView 中没有文本时,如何让 TableView 不保存笔记?

iphone - 自定义 uibarbuttonitem 图像与背景混合

objective-c - 将 NSNumber* 传递给 NSString* 预期参数不会导致编译器警告/错误

objective-c - 将属性添加到代表 "to the power of.."的 nsstring

objective-c - SoundcloudAPI Wrapper iOS5 身份验证错误

ios - 使用 NSURL 检索托管对象 ID

ios - 将 Xcode 4.3 升级到 4.5 会再次下载整个包

ios - 使用排除路径计算 TextView 的单元格高度

ios - 在应用程序文本记录中持久(不在内存中)的最有效的方法/策略是什么?

ios - UITableView 中的多个 Nib 文件