首页 > 解决方案 > 如何使用 SwiftUI 将 CoreData Context 传递给在 Swift 5 中以表格形式呈现的新视图?

问题描述

我目前正在开发一个SwiftUI使用CoreData.

应用程序文件中的这个自动生成的代码允许我在内容视图中使用上下文:

let persistenceController = PersistenceController.shared

ContentView()
    .environment(\.managedObjectContext, persistenceController.container.viewContext)

但是,在我的 ContentView 中,我使用 .sheet() 修饰符来创建模态视图,据我所知,这是一个不同的环境。因此我无法访问上下文。

我的问题:是否有任何解决方案可以将上下文传递给新环境,或者我是否必须在模态视图中创建对上下文的新引用?

struct ModalView: View {

    let context = PersistenceController.shared.container.viewContext
    ...
}

谢谢你的帮助。

标签: iosswiftcore-dataswiftuienvironment

解决方案


你可以像你一样注入它,在ContentView下面找到一个演示

struct ContentView: View {
    @Environment(\.managedObjectContext) var moc

    var body: some View {
       ...
       .sheet(...) {
           ModalView()
             .environment(\.managedObjectContext, moc)    // << here !!
       }
    }
}

struct ModalView: View {
    @Environment(\.managedObjectContext) var moc

    // .. other code
}

推荐阅读