核心数据获取...为什么在将上下文插入上下文A并保存上下文A后,不使用上下文B获取受管对象?

时间:2012-03-31 02:53:31

标签: core-data nsmanagedobject nsmanagedobjectcontext nsfetchrequest

我不确定我在这里缺少什么,所以我会尝试解释我遇到的问题。

我有两个nsmanagedobjectcontexts。我会称他们为A和B.

  1. 我在A
  2. 中插入新实体E.
  3. 我保存A
  4. 来自B的
  5. 我尝试使用简单的fetchRequest
  6. 获取商店中找到的所有E实体
  7. 当执行NSFetchRequest从B获取所有E实体时,即使A被保存,也无法获得我在A中插入的实体。
  8. 如果我针对A执行NSFetchRequest,我可以获得E.
  9. 我认为一旦我保存了一个上下文,那个上下文中的ManagedObject就会被保存到持久存储中(我只有一个持久存储设置)。所以我认为我可以从我想要的任何上下文中获取托管对象E,因为任何NSFetchedRequest都会从持久存储中提取到我正在执行它的上下文中。

    我在这里缺少什么?为什么在保存首先插入E的上下文A之后,我不能从我想要的任何上下文中获取E?

1 个答案:

答案 0 :(得分:2)

您需要将上下文A中的更改合并到上下文B中,或者在保存上下文A后实例化上下文B.

查看NSManagedObjectContext上mergeChangesFromContextDidSaveNotification的文档。