SwiftUI/Controls & Tips

Warning "Non-constant range: argument must be an integer literal"

까칠코더 2023. 12. 7. 16:20
반응형

SwiftUI에서 ForEach 문을 사용할때 다음과 같이 정수 리터럴(literal)이 아닌
itemCount와 같은 변수나 상수를 사용하는 경우에 경고가 나타납니다.

struct ContentView: View {
    let itemCount = 30

    var body: some View {
        VStack {
            ForEach(0..<itemCount) { index in
                Text("Item \(index)")
                    .padding()
            }
        }
    }
}

이를 해결하기 위해서는 동적 범위 인덱스 속성처럼 고유한 아이디(identity)를 제공하기 위해 "id: \.self"를 사용하면 됩니다.

struct ContentView: View {
    let itemCount = 30

    var body: some View {
        VStack {
            ForEach(0..<itemCount, id: \.self) { index in
                Text("Item \(index)")
                    .padding()
            }
        }
    }
}

 

반응형