【发布时间】:2020-04-09 13:00:20
【问题描述】:
我不确定这是否是我们生活的这个勇敢的新 SwiftUI 世界中的反模式,但基本上我有一个 @EnvironmentObject ,其中保存了一些我的视图可以调用的基本用户信息。
我还有一个@ObservedObject,它拥有该视图所需的一些数据。
当视图出现时,我想使用那个@EnvironmentObject 来初始化@ObservedObject:
struct MyCoolView: View {
@EnvironmentObject userData: UserData
@ObservedObject var viewObject: ViewObject = ViewObject(id: self.userData.UID)
var body: some View {
Text("\(self.viewObject.myCoolProperty)")
}
}
不幸的是,在初始化之前我不能在环境变量上调用 self:
“不能在属性初始化器中使用实例成员 'userData';属性初始化器在 'self' 可用之前运行。”
我可以看到一些可能的前进路线,但它们都感觉像黑客。我应该如何处理这个?
【问题讨论】:
-
也许您可以尝试在结构中添加自定义
init。 -
我试过了,得到了一个有点奇怪的错误:
Property wrappers are not yet supported on local properties基本上它说我不能在 init 方法中创建一个@ObservedObject。