首页 > 解决方案 > 当 viewContext.automaticallyMergesChangesFromParent 设置为 true 时,viewContext 指的是什么父级?

问题描述

有后台上下文来执行写操作是很常见的。

// Set automaticallyMergesChangesFromParent to true
persistentContainer.viewContext.automaticallyMergesChangesFromParent = true
persistentContainer.performBackgroundTask { backgroundcontext in
    // Do your work...
    let object = backgroundContext.object(with: restaurant.objectID)
    backgroundContext.delete(object)
    // Save changes to persistent store, update viewContext and notify fetched results controller
    try? backgroundContext.save()
}

我对automaticallyMergesChangesFromParent.

因为,我对viewContext(与主队列关联的托管对象上下文)和backgroundContext.

  1. viewContext.parent是零
  2. backgroundContext.parent是零

我的问题是

  1. 如果我们需要设置viewContext.automaticallyMergesChangesFromParent = true,以便viewContext接收来自的更改backgroundContext,这是否意味着backgroundContext是父级viewContext
  2. 如果不是,那么父母viewContext.automaticallyMergesChangesFromParent = true指的是什么?

标签: iosswiftcore-data

解决方案


如果 parent 为 nil,则为 nil,没有隐式的父关系。当父上下文为 nil 时,automaticallyMergesChangesFromParent自动合并保存到其持久存储协调器的更改。它不是父上下文,但它在这里做了一些类似于父上下文的事情。只要两个上下文使用相同的持久存储协调器(或相同的NSPersistentContainer),那么这将自动合并更改而无需父上下文关系。


推荐阅读