核心数据:合并多个托管对象上下文并删除对象

时间:2010-03-15 11:38:34

标签: iphone object core-data managed

我有一个iPhone项目,我在主应用程序线程中的托管对象上下文中有一系列托管对象。在一个单独的线程上,我将新对象从Web服务器导入第二个托管对象上下文。

如果导入没有错误,我保存导入上下文。这会触发我调用mergeChangesFromContextDidSaveNotification的contextDidSave。这两个上下文合并好了。到目前为止,非常好。

我想要的功能是让原始MOC中的任何对象都不被删除(导致的用户正在刷新数据,因此应该删除旧数据),但合并似乎只是将两个MOC结合起来。

请您告知是否有办法管理2个MOC的合并,以便那些不在一个MOC中的那些被删除?

3 个答案:

答案 0 :(得分:1)

创建新的moc时,它可以访问所有旧对象,因此您可以在后台线程中处理删除操作,作为导入的一部分。

答案 1 :(得分:0)

您所描述的并不仅仅是导入。决定哪些对象被“更新”的逻辑是特定于应用程序的。您可以通过获取这些对象并更新它们而不是创建新实例来处理导入线程,或者您可以在进行修改后执行此操作。在这两个选项中,我更喜欢第一个选项,因为它更符合Core Data的方式。

答案 2 :(得分:0)

在这种情况下我做的是一个方法“prepareForDelet”,它将属性“删除”标记为YES。 然后当我导入我的对象时,如果已存在,我将标记为删除否。 当我的线程结束时,我可以删除删除为是的每个对象