【发布时间】:2021-12-20 10:54:40
【问题描述】:
我试图在 ViewModel 中注入 managedObjectContext,但由于某种奇怪的原因,它抛出了一个奇怪的错误。
struct ContentView: View {
@Environment(\.managedObjectContext) var viewContext
@StateObject var addBudgetVM: AddBudgetViewModel
init() {
// THIS LINE CAUSES ISSUES
addBudgetVM = AddBudgetViewModel(context: viewContext)
}
var body: some View {
// some code here
}
}
Cannot assign to property: 'addBudgetVM' is a get-only property
这里是 AddBudgetViewModel 的实现
import Foundation
import CoreData
class AddBudgetViewModel: ObservableObject {
@Published var name: String = ""
var context: NSManagedObjectContext
init(context: NSManagedObjectContext) {
self.context = context
}
func save() {
}
}
【问题讨论】:
-
@workingdog 但我需要通过 managedObjectContext
-
您可以在您的视图模型上将上下文设为可选,并将其设置为
onAppear -
或者将视图模型注入到视图中
-
我同意@JoakimDanielson。您应该从父视图注入视图模型