我有一种情况,我必须将一个 NSManagedObject 从主上下文复制到编辑上下文中。正如我在 Stackoverflow 中描述的类似情况中看到的那样,对大多数人来说这听起来没有必要,但我看起来需要它。
在我的应用程序中,标签栏中有许多视图,每个视图处理与其他视图相关的不同信息。我认为我需要多个 MOC,因为用户可能会从一个选项卡跳转到另一个选项卡,并在某个选项卡中留下未保存的更改,但它可能会将数据保存在其他一些选项卡/视图中,因此如果发生这种情况,其余视图中的更改将在未经用户同意的情况下保存在最坏的情况下会使应用程序崩溃。
为了添加新信息,我使用添加 MOC 然后合并两个 MOC 中的更改,但编辑并不那么容易。我在 Stackoverflow 中看到了类似的情况,但是应用程序崩溃了,因为我的数据模型似乎没有使用 NSMutableSet 来处理关系(我认为我没有多对多关系,只是一对多)我认为它可以修改,所以我可以检索关系,就好像它们是属性一样
for (NSString *attr in relationships) {
[cloned setValue:[source valueForKey:attr] forKey:attr];
}
但我不知道如何合并克隆对象和原始对象的更改。我想我可以从主上下文中删除对象,然后合并两个上下文并在主上下文中保存更改,但我不知道这样做是否正确。我还担心数据库完整性,因为我不确定反向关系是否会保持对克隆对象的相同引用,就好像它是原始对象一样。
有人可以请教我吗?