티스토리 뷰

 

 

SwiftUI로 프로젝트를 하다 보면 프리뷰에 이런 게 뜨면서 경고창이 나오고, 실행이 안될 때가 있다.

SwiftUI의 제일 큰 장점이 Preview 기능이라 생각하는데 이 기능이 Preview Crashed 되면서 뜨면 정말 답답하게 느껴진다.

 

 

여러 가지 원인이 있겠지만 내가 프로젝트 개발 중 경험했던 원인과 해결법에 대해 작성해보고자 한다.

 

 

 

 

LoginView
└─ LoginFormView
└─ LoginFormViewModel

 

문제가 발생했던 뷰의 디렉토리 구조는 위와 같이 구성하였다.

 

최상단 View는 LoginView이고 입력폼, 로그인 버튼 등 입력 폼과 버튼을 관리하는 View는 LoginFormView에 따로 관리하였다. 

 

원인

나는 하위 뷰에서 객체를 사용하고 최상위 뷰에서 객체를 사용하지 않기 때문에 EnvironmentObject를 사용하지 않았는데

그래서 발생한 문제였다.

 

찾아보니 MVVM 패턴으로에서 EnvironmentObject 를 적용하려 할 때 Preview Crashed가 발생하는게 제일 자주 발생하는 원인이라고 한다.

 

 

해결방법

데이터 바인딩을 할 때 preview 환경에서 필요한 설정값이 누락되어 잘못 설정한 경우 .environmentObject, .environment 등을 통해 데이터를 전달하도록 해야 한다.

 

ViewModel을 구성하고 다른 뷰에서 ObservedObject를 통해 값을 할당해주며, 최상단 뷰에서는 @StateObject를 통해 생성해준 ViewModel을 관찰하도록 지정해주어야 한다.

 

즉, 하위 뷰에서 ViewModel로 객체를 사용하고 최상위뷰에서  EnvironmentObject를 적용해주지 않으면 Preview Crashed가 발생한다.

 

 

 

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함