核心数据关系错误

时间:2012-08-02 19:01:14

标签: ios cocoa-touch core-data

我想保存目标和演员。这两个实体与责任关系相关:

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'

2 个答案:

答案 0 :(得分:5)

我刚遇到同样的问题。这里的解决方案是,我忘了检查模型检查器中关系选项中的“To-Many”选项。

答案 1 :(得分:0)

Core Data似乎对责任关系的性质感到困惑。我建议创建与您的数据模型的当前状态匹配的NSManagedObject子类。

创建此错误的一种方法是将多对多关系更改为一对一关系,而无需重新生成实体类文件。