如何在Swiftui中指定不同的上下文,然后指定主应用程序ViewContext?

发布于 2025-02-07 10:04:15 字数 669 浏览 0 评论 0原文

我有一个应用程序,该应用程序具有多个核心数据模型,一个在主应用程序内部,一个包装中的一个。

问题在于,当调用应用程序包视图时,使用fetchrequest显示来自其模型的数据时,我会遇到错误。

提取请求的实体xxx'entity'似乎来自与此上下文不同的nsmanagebjectModel

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)
  }
}

如果还有其他更好的选择可以做到这一点?

I have an application which has multiple Core Data Models, one inside the main application and one inside a package.

The issue is that when calling Package Views from application which use FetchRequest to display data from its model I get an error.

The fetch request's entity xxx 'Entity' appears to be from a different NSManagedObjectModel than this context

Specifying NSPersistentContainer on each view and then passing down to child view seems to work:

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)
  }
}

I wonder if there any other better option do accomplish this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可可 2025-02-14 10:04:15

核心数据旨在与一个使用多个合并模型的视图上下文一起使用,并且持久商店均由协调员管理。获取或插入时,您可以选择使用哪个商店。

mergedmodel(来自:)
返回通过合并给定捆绑包中的所有模型创建的模型。


为提取请求指定的持久商店数组。

Core Data is designed to work with one view context that uses multiple merged models and persistent stores all managed by a coordinator. When you fetch or insert you can choose which store to work with.

mergedModel(from:)
Returns a model created by merging all the models found in given bundles.

affectedStores
An array of persistent stores specified for the fetch request.

assign(_:to:)
Specifies the store in which a newly inserted object will be saved.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文