我有一个应用程序,它有多个核心数据模型,一个在主应用程序中,一个在包中。
问题是,当从使用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)
}
}
我想知道是否有其他更好的选择做到这一点?
1条答案
按热度按时间tvz2xvvm1#
Core Data设计用于处理一个视图上下文,该上下文使用多个合并模型和持久性存储,所有这些都由一个协调器管理。当您提取或插入时,您可以选择要使用的存储。
mergedModel(from:)
返回一个通过合并给定bundle中的所有模型而创建的模型。affectedStores
为获取请求指定的持久存储数组。assign(_:to:)
指定将保存新插入对象的存储区。