是否可以在init内访问enviromentObject变量?

时间:2020-02-25 16:52:52

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

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

@EnvironmentObject var socketHandler: SocketHandler


init() {

    print(self.socketHandler.testVar)

}

我尝试过这种方法,但是没有起作用。我收到此错误:

Fatal error: No ObservableObject of type SocketHandler found

我已将enviromentObject添加到SceneDelegate,并且可以在我的UI中访问该变量。

1 个答案:

答案 0 :(得分:0)

如果您以通常的方式调用它,例如

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