【发布时间】:2021-11-09 11:41:29
【问题描述】:
我正在尝试将我的核心数据视图上下文注入到多个视图模型中,因此我不需要在整个应用程序中传递一个大视图模型。
我使用的是 SwiftUI 生命周期,所以这里会生成 NSManagedObjectContext:
@main
struct Core_Data_VM_TestApp: App {
let persistenceController = PersistenceController.shared
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistenceController.container.viewContext)
}
}
}
跟着@987654321@我没有成功,在与不同的初始化器一起玩之后也是如此。
我想要做的是这样的事情,它不起作用('不能在属性初始化器中使用实例成员'viewContext';属性初始化器在'self'可用之前运行')
内容视图
struct ContentView: View {
@Environment(\.managedObjectContext) private var viewContext
@StateObject var itemVM = ItemViewModel(viewContext: viewContext)
(...)
视图模型:
class ItemViewModel: ObservableObject {
var viewContext: NSManagedObjectContext
init(viewContext: NSManagedObjectContext) {
self.viewContext = viewContext
}
}
感谢您的帮助!
【问题讨论】:
-
在父视图中创建视图模型并注入它。
标签: swiftui