当 viewContext.automaticallyMergesChangesFromParent 设置为 true 时,viewContext 指的是哪一个父级?

Che*_*eng 6 core-data ios swift

通常需要有后台上下文来执行写操作。

// 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()
}
Run Code Online (Sandbox Code Playgroud)

我对 很困惑automaticallyMergesChangesFromParent

viewContext因为,我对(与主队列关联的托管对象上下文) 和进行了以下观察backgroundContext

  1. viewContext.parent为零
  2. backgroundContext.parent为零

我的问题是

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

Tom*_*ton 9

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

  • 谢谢。我现在明白了。在这种情况下,“automaticallyMergesChangesFromParent”意味着“viewContext”正在从持久存储协调器获取最新更改,而不是父上下文。也许如果他们有一个像“automaticallyMergesChangesFromParentOrPercientStoreCoordinator”这样的详细命名会让事情变得清晰;-) (2认同)