0

我有一个名为 guestlist 的实体,它与名为 guest 的实体具有一对多的关系。Guestlist 也与 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

如果来宾列表与来宾具有一对多关系,则来宾只能连接到一个来宾列表。实际上,这意味着只有您分配给它的最后一个客人列表(无论是隐式还是显式)都会保留。

您想将这种关系更改为多对多。

于 2012-06-04T04:13:44.277 回答