如何使用 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
}
我目前正在开发一个使用 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
}