Ich bin mir nicht sicher, ob dies ein Gegenmuster in dieser schönen neuen SwiftUI-Welt ist, in der wir leben, aber im Wesentlichen habe ich ein @EnvironmentObject mit einigen grundlegenden Benutzerinformationen, die meine Ansichten aufrufen können.
Ich habe auch ein @ObservedObject, das einige Daten besitzt, die für diese Ansicht erforderlich sind.
Wenn die Ansicht angezeigt wird, möchte ich dieses @EnvironmentObject verwenden, um das @ObservedObject zu initialisieren:
struct MyCoolView: View {
@EnvironmentObject userData: UserData
@ObservedObject var viewObject: ViewObject = ViewObject(id: self.userData.UID)
var body: some View {
Text("\(self.viewObject.myCoolProperty)")
}
}
Leider kann ich die Umgebungsvariable erst nach der Initialisierung aufrufen:
"Das Instanzmitglied 'userData' kann im Eigenschaftsinitialisierer nicht verwendet werden. Eigenschaftsinitialisierer werden ausgeführt, bevor 'self' verfügbar ist."
Ich kann ein paar mögliche Routen vorwärts sehen, aber sie fühlen sich alle wie Hacks an. Wie soll ich das angehen?
Property wrappers are not yet supported on local properties
Grundsätzlich kann ich kein @ObservedObject in einer init-Methode erstellen.
init
, der Struktur einen Benutzer hinzuzufügen .