在Core Data中创建两个实体之间的关系

时间:2012-05-24 16:37:30

标签: objective-c core-data entity-relationship one-to-many

我有一个简单的核心数据中2个实体之间有很多关系:

  

团队< ------->>游戏

当我将新游戏托管对象插入上下文时,我需要在模型层查询团队实体的一些属性。但是,当我使用awakeFromInsert时尚未设置关系,因此teamnil

// game.m
- awakeFromInsert
{
    [super awakeFromInsert];

    if ([self team] isActive] {
        //.... set game properties
    }
}

有没有办法在调用insert之前建立关系并在之后设置关系:

Game *newGame = [NSEntityDescription insertNewObjectForEntityForName:@"Game" 
                                            inManagedObjectContext:managedObjectContext];
[newGame setTeam:team];

在rails中我会使用@team.games.build,但这在核心数据中似乎不可能。

1 个答案:

答案 0 :(得分:0)

我怀疑您需要自定义方法(例如+ (Game *)insertGameForTeam:(Team *)team)并在那里进行team检查,或者如果您需要将其保留在模型中,请处理- (void)willSave中的关系条件水平。

仅使用默认逻辑,在完成插入之前,该对象不存在,并且在它存在之前无法将其与另一个对象关联。