我正在try 创建内部有@StateObject
作为数据容器的SwiftUI视图,然而,它依赖于@Environment
变量.
当然,我做错了什么,但我找不到有效的解决方案.
这就是我的观点:
struct SomeView: View {
@EnvironmentObject var router: Router
@Environment(\.managedObjectContext) var managedObjectContext
@StateObject var myDataContainer: MyDataContainer
init() {
let context = managedObjectContext
_weeklyStatistics = StateObject(wrappedValue: StatisticsWeeklyDataContainer(context: context)) // Exception, as we are trying to access managedObjectContext before init
}
在初始化期间我无法访问self.managedObjectContext
,这导致编译失败.
MyDataContainer依赖于NSManagedObjectContext
,它被设置为环境变量:
class MyDataContrainer: ObservableObject {
@Published var foo: [Date] = []
private let context: NSManagedObjectContext
init(context: NSManagedObjectContext) {
self.context = context
print("myDataContainer init")
}
我想知道,如何正确地解决这些问题?