0

ゲストと呼ばれるエンティティと 1 対多の関係を持つゲストリストと呼ばれるエンティティがあります。Guestlist には、Invite エンティティとの関係もあります。

ゲスト オブジェクトを含むゲストリストを使用して Invite オブジェクトを作成するとき。それはうまく保存され、アプリ内でうまく表示されます。次に、別のタイトルで別の招待状を作成し、同じゲストで新しいゲスト リスト オブジェクトを作成します。これもうまく保存され、アプリ内でうまく表示されます。

問題は、アプリを終了して戻ってくると、最新の招待のみがゲストリストとゲストの関係を保持することです。ゲスト リストのタイムスタンプ値は存在しますが、ゲスト オブジェクトとの関係は空です。

オブジェクトを設定してストアに保存するために使用するコードを次に示します。

Invite *invite = (Invite *)[NSEntityDescription insertNewObjectForEntityForName:@"Invite" 
                                                        inManagedObjectContext:anotherContext];

[invite setTitle:[inviteDetailsModel descriptionOfInvite]];

GuestList *guestlist = [NSEntityDescription insertNewObjectForEntityForName:@"GuestList" 
                                                           inManagedObjectContext:anotherContext];
[guestlist setGuestlist_to_invite:invite];
[guestlist setDateInvited:[NSDate date]];

for (Invitee *invitee in [inviteDetailsModel peopleInvited]) {

        Guest *guest = [NSEntityDescription insertNewObjectForEntityForName:@"Guest" 
                                                                  inManagedObjectContext:anotherContext];
        [guest setFirstName:invitee.firstName];
        [guest setLastName:invitee.lastName];
        [guest setABookID:invitee.guestID];

        [guestlist addGuestObject:guest];
    }
}

[invite setGuestlist:guestlist];

NSError *error = nil;
if(![anotherContext save:&error]) {
    NSLog(@"Couldnt save our invite data %@",error);
    return nil;
}
4

1 に答える 1

3

ゲスト リストがゲストと 1 対多の関係にある場合、ゲストは 1 つのゲスト リストにのみ接続できます。実際には、(暗黙的または明示的に) 割り当てた最後のゲスト リストのみが保持されることを意味します。

その関係を多対多に変更したいとします。

于 2012-06-04T04:13:44.277 に答える