Ios 如何使子MOC看到父MOC的更改以及如何解决它们之间的冲突?

Ios 如何使子MOC看到父MOC的更改以及如何解决它们之间的冲突?,ios,core-data,Ios,Core Data,新的基于队列的MOC和iOS5中引入的嵌套MOC似乎是一个更简单、更干净的并发模型,所以我现在很高兴地使用它。但有几件事我并不清楚: 子MOC是否自动提取父MOC的更改?还是我仍然需要手动协调它们?如果是后者,如何手动刷新子级以合并父级更改? (我知道事情是如何运作的——父MOC在子MOC保存时从子MOC获得更改。) 如果子MOC中的更改与父MOC中的更改之间存在冲突,则在保存子MOC时会发生什么情况?mergePolicy是否也负责解决子MOC和父MOC之间的冲突 是和否,取决于您对“拉动pa

新的基于队列的MOC和iOS5中引入的嵌套MOC似乎是一个更简单、更干净的并发模型,所以我现在很高兴地使用它。但有几件事我并不清楚:

  • 子MOC是否自动提取父MOC的更改?还是我仍然需要手动协调它们?如果是后者,如何手动刷新子级以合并父级更改? (我知道事情是如何运作的——父MOC在子MOC保存时从子MOC获得更改。)
  • 如果子MOC中的更改与父MOC中的更改之间存在冲突,则在保存子MOC时会发生什么情况?
    mergePolicy
    是否也负责解决子MOC和父MOC之间的冲突
  • 是和否,取决于您对“拉动parentMOCs自动更改”的定义。如果您的意思是,下一次孩子抓取时,它将获得更新的数据,那么是的。如果你的意思是对象会自动改变,那么不会。原因是MOC是一个草稿行,如果你不改变它,它就不会改变

  • 是的,如果要从多个位置更改相同的对象/关系,则必须解决合并冲突。这是一个复杂的问题,用一般的答案无法充分回答。您应该真正阅读核心数据编程指南,特别是关于变更管理的部分

  • 编辑

  • 假设我在子MOC中持有对象A,并将关系B添加到父MOC中的A。如果我访问A.B,我会得到什么?无如果发生这种情况,我该怎么办 我想在儿童MOC中看到A.B?使用refreshObject:mergeChanges:to 刷新,或使用objectWithID:再次获取?有没有办法去 刷新整个儿童MOC?我有一个非常复杂的对象网络 child MOC和我不想(或只是不能)刷新/重新获取每个 对象一个接一个
  • 通过子MOC查看对象A时,在从子MOC重新蚀刻之前,您不会看到父MOC中的更改。如果您想查看父对象中的内容,可以通过MOC上的另一个获取,或者通过任何方法从存储中获取apecific对象。但是,我必须强调,您需要阅读有关每次提取的文档,因为它们可能有副作用。确切答案取决于您选择的方法

    通常,如果您正在进行持续更改,您希望在子级中进行更改,并将其推送到父级,或者处理DidChange通知,使更改看起来“自动”

  • 合并政策在这里有效吗
  • 同样,在这里我能给你的最好答案是指向“核心数据编程指南”。请特别注意以下两个部分:


    1。假设我在子MOC中持有对象A,并将关系B添加到父MOC中的A。如果我访问A.B,我会得到什么?无如果我想在儿童MOC中看到A.B,我该怎么办?使用
    refreshObject:mergeChanges:
    刷新,或使用
    objectWithID:
    再次获取?有没有办法刷新整个儿童MOC?我在childmoc中有一个非常复杂的对象网络,我不想(或者只是不能)逐个刷新/重新获取每个对象。