0

CoreDataの2つのエンティティ間に多くの関係がある単純なものがあります。

チーム<------->>ゲーム

新しいゲーム管理オブジェクトをコンテキストに挿入するとき、モデルレイヤーでチームエンティティのいくつかのプロパティをクエリする必要があります。ただし、使用する場合awakeFromInsert、関係はまだ設定されていないので、teamですnil

// 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が、CoreDataではこれが不可能なようです。

4

1 に答える 1

0

モデルレベルで維持する必要がある場合は、などのカスタムメソッドが必要であり、そこでチェック+ (Game *)insertGameForTeam:(Team *)teamを実行するteamか、関係条件を処理する必要があると思います。- (void)willSave

デフォルトロジックのみを使用すると、オブジェクトは挿入が完了するまで存在せず、存在するまで別のオブジェクトに関連付けることはできません。

于 2012-05-24T17:03:19.023 に答える