본문 바로가기

IT/Swift5

[swiftui] Thread 1: Fatal error: No ObservableObject of type 에러

 

swiftui 를 하다보면 데이터를 탭간 이동할 때가 있다. 그럴 때

@EnvironmentObject 프로퍼티 래퍼를 사용하는데.... 

 

탭을 사용하는 앱에서 위와 같은 에러가 뜬다면... 다음 내용을 확인해보자!!

 

탭뷰에 enviromentObject(**ObservableObject 할 클래스) 를 꼭 인스턴스 시키자.

 

 

나 같은 경우 위에 myPage 에서 VinoModel() 에 있는 값을 가져오려고 했는데 ....

"Thread 1:Fatal error: No ObservableObject of type" 와 같은 에러로 고생했다.

폭풍 구글링과 코드를 하나씩 생각하면서 다시 바라보니...

 

myPage().environmentObject(VinoModel()) 라고 값을 넘겨줘야한다!!

 

2시간 동안 모든 코드를 다봤는데... 이 글을 보는 분들께 도움이 되었으면 한다.

 

 

수정!!

위와 같이 하면 에러는 해결되나...

VinoModel() 가 두번 인스턴스를 시켜 탭간 데이터 이동이 안된다. 이를 해결하려면!!

탭간의VinoModel() 을 없애버리고...!

탭 상단의 뷰에 .environmentObject(VinoModel()) 를 추가해야한다. 

나 같은 경우 탭을 포함하는 메인 화면이 VinoApp 이었는데, 여기에 추가시키면 탭 간 데이터 전송이 된다!!!!!