为什么来自父上下文的更改会自动转到子上下文?

点播
// Getting the main context:
let mainContext = appDelegate.persistentContainer.viewContext

// Creating a child context:
let childContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
childContext.parent = mainContext
print(childContext.automaticallyMergesChangesFromParent) // false

// Creating an object after creating a child context and setting its value
let wallet = WalletMO.init(context: mainContext)
wallet.currencyCode = "USD"

// Trying to get an object from a child context. And we get it successfully. Why?
if let walletFromChildContext = childContext.object(with: wallet.objectID) as? WalletMO {
   print(walletFromChildContext.currencyCode ?? "nil") // "USD"
}

我不明白为什么从父上下文的更改会自动到达子上下文。请解释为什么会发生这种情况。

特顿

您以前从未获得过钱包,因此子上下文正在联系其父上下文以查找对象。它不会自动合并更改,它只是按照文档中的说明进行操作:

如果对象未在上下文中注册,则它可能会被提取或作为错误返回。

如果在父上下文中创建钱包,从子上下文中获取对它的引用,然后在父上下文中更改它,您将看到子对象没有更改。根据定义,未注册的对象必须来自父上下文或持久存储,否则您将创建同一对象的多个版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

什么是线程上下文?

来自分类Java

来自jar文件的Spring上下文

来自分类Java

什么是JSP上下文?

来自分类Java

AnnotationConfigApplicationContext和父上下文

来自分类Java

为什么不必须将使用ThreadPoolExecutor的子线程暴露给父线程的任何继承上下文?

来自分类Android

获取调用上下文的父上下文

来自分类Dev

如果未在更新时指定所有上下文,为什么会执行所有上下文?

来自分类Dev

为什么意图需要上下文?

来自分类Dev

为什么Android使用多个上下文而每个上下文都不相同?

来自分类Dev

核心数据:父上下文更改未合并到子上下文中

来自分类Dev

什么是CUDA上下文?

来自分类Dev

上下文菜单

来自分类Dev

反应OpenLayers父上下文

来自分类Dev

保存上下文

来自分类Dev

上下文包含什么?

来自分类Dev

反应-上下文

来自分类Dev

来自子级的上下文API setState

来自分类Dev

当提供程序组件的父状态更改时,为什么不能更新子组件中的值(带有react上下文)?

来自分类Dev

反思-来自深层上下文的SetValue

来自分类Dev

为什么函数参数会引发列表上下文?

来自分类Dev

为什么将绑定数据上下文设置为控件的数据上下文?

来自分类Dev

获取父函数-jquery的上下文

来自分类Dev

子例程的上下文是什么?

来自分类Dev

为什么上下文=无?

来自分类Dev

父目录的SELinux安全上下文

来自分类Dev

什么设置导致 ContextLoaderListener 的(根上下文)成为 DispatcherServlet 上下文的“父”上下文?

来自分类Dev

从上下文菜单更改父按钮名称

来自分类Dev

为什么当上下文值更新时我的上下文不更新?

来自分类Dev

为什么持久化上下文称为持久化上下文?

Related 相关文章

热门标签

归档