iphone - 添加要存储的新对象时核心数据关系丢失

标签 iphone ios sqlite core-data

我有一个名为 gueSTList 的实体,它与一个名为 guest 的实体具有一对多关系。 GueSTList 也与 Invite 实体有关系。

当我使用包含 guest 对象的 guest 列表创建邀请对象时。它可以很好地保存并在应用程序中正常显示。接下来,我创建了另一个具有不同标题的邀请,一个新的 guest 列表对象,以及相同的 guest 。这也可以很好地保存并在应用程序中正常显示。

问题是,当我退出应用程序并返回时,只有最近的邀请保留 guest 列表与 guest 的关系。 guest 列表上的时间戳值存在,但与 guest 对象的关系为空。

这是我用来设置对象并将它们保存到商店中的代码。

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;
}

最佳答案

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

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

关于iphone - 添加要存储的新对象时核心数据关系丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10876212/

相关文章:

python - 如何解决无法将表名解析为 python sqlite 查询的问题?

iphone - 我的服务器如何安全地验证 iPhone 应用内购买?

ios - 如何在新设备中以编程方式禁用触觉振动

css - iPhone 6 的响应式设计?

ios - 状态恢复期间的 UIAppearance 错误

ios - 崩溃: Collection View 布局:<MyLayout>) 在更新过程中被释放

ios - [NSLocale preferredLanguages] 是否返回空值?

ios - 在 iOS 上查找 Facebook SDK 版本

javascript - 如何在函数中返回 Node 的sqlite3的结果?

mysql - 检查插入数据的完整性 - sqlite3