이것이 우리가 살고있는이 용감한 새로운 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
구조체에 커스텀 을 추가해 볼 수 있습니다 .