これが私たちが住んでいるこの勇敢な新しい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 'が使用可能になる前にプロパティ初期化子が実行されます。」
私はいくつかの可能なルートを見ることができますが、それらはすべてハックのように感じます。私はこれにどのように取り組むべきですか?
私はそれを試したところ、やや奇妙なエラーが発生しました。
—
snarik
Property wrappers are not yet supported on local properties
基本的に、initメソッドで@ObservedObjectを作成できないと言っています。
init
は構造体にカスタムを追加してみることができます。