ViewBuilder (HStack, Button, Label 등….) 내부에서 guard 사용했을 때 발생하는 오류
근데 또 if let 을 사용하면 해결되는…
일단 제가 해석하기로는...
guard를 사용하면 return 키워드를 사용해야 하는데,
ViewBuilder는 컨트롤 흐름 문이 포함된 클로저 표현식을 함께 사용할 수 없다.. 요런 말
그래서 찾아본 H/VStack의 init과 ViewBuilder..
HStack은 ViewBuiler를 파라미터로 갖고,
우리는 H/VStack의 클로져 안에 View를 넣어서 쌓아서 뷰를 구성하고 있다..
예를 들면 이렇게.. ?
ViewBuilder가 무엇이냐를 더 찾아보니..
ViewBuilder
- 함수 또는 프로퍼티의 파라미터로 사용됨
- if, for switch 등과 같은 제어문에서 뷰를 반환할 때 유용
- some View를 반환함!
그래서 return을 사용할 수 없는것으로 결론 짓고..
if let을 사용하여 Text()를 뷰로 반환하는 모양으로 제어했더니 가능했다!
어쨌든 결론…
ViewBuilder 에서 guard let은 지양하는 걸로…!!
혹시 제가 이해한 바탕이 다르거나 에러난 이유가 다르다면 댓글로 알려주세요…!!!
오포끝!
'소소한 발견' 카테고리의 다른 글
[iOS] "UICollectinView must be initalized with a non-nil layout parameter" 해결하기 (0) | 2023.06.17 |
---|