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层。如果你再深入一点,那就太麻烦了。

我想问题在于,我要深入到多深。我正在把它转换成一个单身汉。对全班同学来说更有意义。谢谢