我想保存目标和演员。这两个实体与责任关系相关:
Goal *addgoal = (Goal*)[NSEntityDescription insertNewObjectForEntityForName:@"Goal" inManagedObjectContext:context];
addgoal.goalNaam = nameTextField.text;
addgoal.goalId = idField.text;
addgoal.goalBeschrijving = beschrijvingField.text;
Actor *addactor = (Actor*)[NSEntityDescription insertNewObjectForEntityForName:@"Actor" inManagedObjectContext:context];
addactor.actorNaam = responsibleField.text;
[addgoal addResponsibilityObject:addactor];
上面的行([addgoal addResponsibility:addactor])导致错误,有什么问题?
在Goal.h中:
@interface Goal (CoreDataGeneratedAccessors)
- (void)addResponsibilityObject:(Actor *)value;
@end
错误:
2012-08-02 20:57:11.838 Choose3 [7434:fb03] - [__ NSCFSet实体]:无法识别的选择器发送到实例0x8877810 2012-08-02 20:57:11.840选择3 [7434:fb03] * 由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [__ NSCFSet实体]:无法识别的选择器发送到实例0x8877810'
答案 0 :(得分:5)
我刚遇到同样的问题。这里的解决方案是,我忘了检查模型检查器中关系选项中的“To-Many”选项。
答案 1 :(得分:0)
Core Data似乎对责任关系的性质感到困惑。我建议创建与您的数据模型的当前状态匹配的NSManagedObject
子类。
创建此错误的一种方法是将多对多关系更改为一对一关系,而无需重新生成实体类文件。