Swiftui 在通知观察者内部未找到XXX类型的ObserveObject
我有一门课是这样的:Swiftui 在通知观察者内部未找到XXX类型的ObserveObject,swiftui,Swiftui,我有一门课是这样的: class GlobalVariables: ObservableObject { @Published var aaa = AAA() @Published var bbb = BBB() @Published var ccc = CCC() } 当我想访问它时,我会将其添加到视图中: @EnvironmentObject var globalVariables : GlobalVariables 就这样 因此,我对名为MyView的视图执行了该操作 我很
class GlobalVariables: ObservableObject {
@Published var aaa = AAA()
@Published var bbb = BBB()
@Published var ccc = CCC()
}
当我想访问它时,我会将其添加到视图中:
@EnvironmentObject var globalVariables : GlobalVariables
就这样
因此,我对名为MyView
的视图执行了该操作
我很高兴。我几乎可以在MyView
中的任何地方访问全局变量
但是,总是有一个但是,MyView
包含以下方法:
func initNotification() {
let gv = globalVariables // 1
NotificationCenter.default
.addObserver(forName: .runOnDetectedObject,
object: nil,
queue: OperationQueue.main,
using: {notification in
globalVariables.aaa(object:myObj)) // 2
})
}
//1和//2编译很好,但当我运行时,两行都会崩溃
线程1:致命错误:未找到GlobalVariables类型的ObservableObject。GlobalVariables的View.environmentObject(:)可能作为此视图的祖先丢失
我的应用程序上有这个
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistenceController.container.viewContext)
.environmentObject(GlobalVariables())
}
}
我遇到问题的视图不是ContentView()
为什么?没有故障诊断码,无法帮助您排除故障
但是,您必须向下传递环境对象
struct ContentView: View {
@Environment(\.managedObjectContext) private var viewContext
@EnvironmentObject var globalVariables : GlobalVariables
var body: some View {
MyView().environmentObject(globalVariables)
}
}
它通常只适用于大约2-3层。如果你再深入一点,那就太麻烦了。我想问题在于,我要深入到多深。我正在把它转换成一个单身汉。对全班同学来说更有意义。谢谢