刷新对象在嵌套托管对象上下文中的工作原理



>假设我在父主队列并发类型上有一个对象,并且我更改了它的属性值之一。然后,在不保存的情况下,我在子私有队列类型上执行 fetch 请求,以获取包含该对象的数组。我遇到的问题是,有时我得到的对象没有包含在主线程上进行的待处理更改,尽管它应该。

但是,如果我调用[childMOC refreshObject:object mergeChanges:YES];,我确实会收到挂起的更改。但是文档中的描述说这种方法

"更新托管对象的持久属性以使用 持久存储区中的最新值。

" 那么这些值难道不是保存到磁盘的值,因此它不会包含任何挂起的更改吗?

我对这种方法的工作原理有点困惑。

对于嵌套托管对象上下文,子上下文不会看到直接对父上下文所做的任何更改。如果需要最新更改,则始终需要在子上下文中刷新对象。

是的,刷新包括来自父上下文的挂起更改。文档在这方面需要更新。

更改传播仅从子>父上下文自动(保存时)进行。

最新更新