【问题标题】:Is it possible to access enviromentObject variable inside the init?是否可以在 init 中访问 enviromentObject 变量?
【发布时间】:2020-02-25 16:52:52
【问题描述】:

是否可以在结构体的 init 函数中访问 enviromentObject 变量?

@EnvironmentObject var socketHandler: SocketHandler


init() {

    print(self.socketHandler.testVar)

}

我试过这样但没有让它工作。我收到了这个错误:

Fatal error: No ObservableObject of type SocketHandler found

我已将环境对象添加到 SceneDelegate 并且可以在我的 UI 中访问该变量。

【问题讨论】:

    标签: swift environment-variables swiftui swiftui-environment swiftui-state


    【解决方案1】:

    如果你以通常的方式调用它,比如

    let contentView = ContentView().environmentObject(SomeObject())
    

    那么肯定答案是否定的,因为这就是实际所做的:

    let temp = ContentView() // < called constructor
    let contentView = temp.environmentObject(SomeObject()) // call function on variable that 
                                                   // just return another different value
    

    【讨论】:

    • 我不太明白你的意思
    • @JonathanThunberg,我的意思是环境对象注入视图构造函数完成之后。
    • 嗯,好吧,即使在孩子们看过之后?
    • @JonathanThunberg,在每个视图中,环境对象都以相同的方式注入 - 使用 .environmentObject 调用已构造的值,即。在构造函数之后。 (init() 是构造函数...以防万一)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多