gpt4 book ai didi

ios - Swiftui - 如何使用环境对象作为参数初始化observedObject?

转载 作者:行者123 更新时间:2023-12-01 10:21:56 28 4
gpt4 key购买 nike

我不确定这是否是我们生活的这个勇敢的新 SwiftUI 世界中的反模式,但基本上我有一个 @EnvironmentObject ,其中保存了一些我的 View 可以调用的基本用户信息。

我还有一个@ObservedObject,它拥有该 View 所需的一些数据。

当 View 出现时,我想使用该@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 :

"Cannot use instance member 'userData' within property initializer; property initializers run before 'self' is available."



我可以看到一些可能的前进路线,但它们都感觉像黑客。我应该如何处理这个?

最佳答案

这是方法(最简单的IMO):

struct MyCoolView: View {
@EnvironmentObject var userData: UserData

var body: some View {
MyCoolInternalView(ViewObject(id: self.userData.UID))
}
}

struct MyCoolInternalView: View {
@EnvironmentObject var userData: UserData
@ObservedObject var viewObject: ViewObject

init(_ viewObject: ViewObject) {
self.viewObject = viewObject
}

var body: some View {
Text("\(self.viewObject.myCoolProperty)")
}
}
backup

关于ios - Swiftui - 如何使用环境对象作为参数初始化observedObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59367218/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com