是否可以在主要是 Swift 项目的 SwiftUI 视图中使用 Core Data?我问这个问题是因为当我尝试将托管对象上下文从我的 Swift 项目获取到我的 SwiftUI 视图时,所有示例都说它需要首先在顶级 SwiftUI 视图上设置,如下所示:
WindowGroup {
ContentView()
.environment(\.managedObjectContext, DataController.shared.container.viewContext)
.environmentObject(coreDataViewModel)
}
不幸的是,我没有顶级 SwiftUI 视图,因此这会导致问题。是否有另一种方法可以在 SwiftUI 视图上设置 MOC,或者我是否必须将初始 Swift 视图嵌套在 SwiftUI 视图中才能使用核心数据?
是的,您可以混合 UIKit 和 SwiftUI 或任何其他界面。
Swift 是他们共享的语言。
“顶层”可以是第一个 SwiftUI 视图
AnySwiftUIView()
.environment(\.managedObjectContext, DataController.shared.container.viewContext)
请注意,您还可以使用
@ObservedObject
来监视作为参数传入的任何 CoreData 对象。
如果视图需要访问它,您只需将其放入环境中。