如何使用SwiftUI将CoreData上下文传递到Swift 5中以表单形式呈现的新视图



我目前正在开发一个使用CoreDataSwiftUI应用程序。

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

let persistenceController = PersistenceController.shared
ContentView()
.environment(.managedObjectContext, persistenceController.container.viewContext)

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

我的问题:是否有将上下文传递到新环境的解决方案,或者我是否必须在模式视图中创建一个新的上下文引用?

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
}

最新更新