简体   繁体   English

@EnvironmentObject 未正确创建

[英]@EnvironmentObject not created correctly

I want to access an instance of the class我想访问类的一个实例

class MyModel: ObservableObject {
  @Published var s: String = "test"
}

via the environment.通过环境。 I instanciated it in Scene Delegate我在 Scene Delegate 中实例化了它

  var m = MyModel()

Then I tried to put it into the environment with然后我试着把它放到环境中

let contentView = ContentView().environment(\.managedObjectContext, context)
_ = contentView.environmentObject(m)

In contentview I reference it like在 contentview 我引用它

@EnvironmentObject var mod: MyModel

If I access it like如果我像这样访问它

Text(mod.s)

the app crashes, saying "Fatal error: No ObservableObject of type MyModel found."应用程序崩溃,显示“致命错误:未找到 MyModel 类型的 ObservableObject”。

What am I doing wrong?我究竟做错了什么?

Instead of代替

let contentView = ContentView().environment(\\.managedObjectContext, context) _ = contentView.environmentObject(m)

use

let contentView = ContentView()
                    .environmentObject(m)
                    .environment(\.managedObjectContext, context)

it is not a setter, it is view modifier that generates another view with injected environment object它不是一个 setter,它是一个视图修改器,它用注入的环境对象生成另一个视图

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM