如何使用 SwiftUI 将 CoreData 上下文传递给在 Swift 5 中显示为 Sheet 的新视图?

How to pass CoreData Context to new View presented as a Sheet in Swift 5 using SwiftUI?

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

SwiftUI 应用程序

This auto-generated Code inside the App File allows me to use the Context in the Content View:

let persistenceController = PersistenceController.shared

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

However, inside my ContentView, I am using the .sheet() Modifier to create a Modal View, which - as far as I know - is a different environment. Therefore I have no access to the Context.

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

struct ModalView: View {

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

感谢您的帮助。

您可以像 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
}