Nie jestem pewien, czy jest to antypattern w tym odważnym nowym świecie SwiftUI, w którym żyjemy, ale zasadniczo mam @EnvironmentObject z zapisanymi podstawowymi informacjami dla użytkownika, które mogą wywoływać moje poglądy.
Mam również @ObservedObject, który posiada niektóre dane wymagane dla tego widoku.
Kiedy pojawi się widok, chcę użyć tego @EnvironmentObject do zainicjowania @ObservedObject:
struct MyCoolView: View {
@EnvironmentObject userData: UserData
@ObservedObject var viewObject: ViewObject = ViewObject(id: self.userData.UID)
var body: some View {
Text("\(self.viewObject.myCoolProperty)")
}
}
Niestety nie mogę wywołać self w zmiennej środowiskowej, dopóki nie zostanie zainicjowana:
„Nie można użyć elementu członkowskiego„ userData ”instancji w inicjalizatorze właściwości; inicjatory właściwości są uruchamiane, zanim będzie dostępne„ self ”.”
Widzę kilka możliwych dróg naprzód, ale wszystkie wydają się hackami. Jak mam do tego podejść?
Property wrappers are not yet supported on local properties
Zasadniczo to powiedzenie, że nie mogę utworzyć @ObservedObject w metodzie init.
init
strukturę.