본문 바로가기
다시 개발자

[swiftui] The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions 오류 처리

by 까삼스 이삐 2024. 1. 15.
728x90
반응형

가끔 xcode로 swiftui를 개발, 컴파일할 때 다음과 같은 에러가 나면서 컴파일 실패가 나는 경우가 있습니다.

 

Image by  fancycrave1  from  Pixabay

 

 

오류 예:

The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions

 

Swiftui failed to produce diagnostic for expression; please submit a bug report

 

Failed to produce diagnostic for expression; please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project

 

728x90

보통 xcode의 컴파일러는 에러가 난 위치를 정확히 알려주고 때론 어떻게 고쳐야 하는지 가이드를 줄 때도 있습니다. 하지만 위의 에러는 보통 View의 body에 빨간 줄이 생기며 알기 힘든 메시지만 보여주며 컴파일 실패가 됩니다.

import SwiftUI

struct
TestView: View {

    var body: some View {  // <-- 이곳에 빨간 줄이 생기며 위에 에러가 남

        ...
    }
}

 

구글링을 해도 chat-gpt에 물어봐도 딱히 원하는 답을 찾기 어려웠습니다. 그런데 정말 의외로 간단한 방법으로 해결을 해 공유합니다.

 

저의 경우는 대부분 오타가 그 원인이었습니다. 그리고 공통적으로 'ForEach' 안에서 발생했습니다.

                              ForEach(Array(zip(model.labels.indices, $model.labels)), id: \.0) { index, item in

                                    VStack {

                                        HStack {
                                            Text("\(index + 1):")
                                            TextField("label을 입력하세요", text: item.label)

...

 

즉, 위의 예제에서 item의 속성 값에 오타가 있으면 주로 정확한 item의 속성 값에 빨간 줄이 생기는 것이 아니라 엉뚱한 곳에 빨간 줄이 생기고 엉뚱한 에러 메시지를 보여 줍니다.

 

따라서 ForEach를 사용할 때 주의가 필요해 보입니다.

 

728x90
반응형

댓글