xcode 如何在SwiftUI中指定与主应用程序viewContext不同的上下文?

rta7y2nd  于 2023-03-13  发布在  Swift
关注(0)|答案(1)|浏览(136)

我有一个应用程序,它有多个核心数据模型,一个在主应用程序中,一个在包中。
问题是,当从使用FetchRequest的应用程序调用包视图以显示其模型中的数据时,我收到错误。
提取请求的实体xxx 'Entity'似乎来自与此上下文不同的NSManagedObjectModel
在每个视图上指定NSPersistentContainer,然后向下传递到子视图似乎可以工作:

let packagePersistenceController = PackagePersistenceController.shared

SomeView()
  .environment(\.managedObjectContext, packagePersistenceController.container.viewContext)

struct SomeView() {

let packagePersistenceController = PackagePersistenceController.shared

  var body:some View {
     AnotherView()
       .environment(\.managedObjectContext, packagePersistenceController.container.viewContext)
  }
}

我想知道是否有其他更好的选择做到这一点?

tvz2xvvm

tvz2xvvm1#

Core Data设计用于处理一个视图上下文,该上下文使用多个合并模型和持久性存储,所有这些都由一个协调器管理。当您提取或插入时,您可以选择要使用的存储。
mergedModel(from:)返回一个通过合并给定bundle中的所有模型而创建的模型。
affectedStores为获取请求指定的持久存储数组。
assign(_:to:)指定将保存新插入对象的存储区。

相关问题