【问题标题】:How to pass CoreData Context to new View presented as a Sheet in Swift 5 using SwiftUI?如何使用 SwiftUI 将 CoreData Context 传递给在 Swift 5 中以表格形式呈现的新视图?
【发布时间】:2025-12-29 15:25:11
【问题描述】:

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

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

let persistenceController = PersistenceController.shared

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

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

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

struct ModalView: View {

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

感谢您的帮助。

【问题讨论】:

    标签: ios swift core-data swiftui environment


    【解决方案1】:

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

    【讨论】:

      最近更新 更多