[SwiftUI] 警告「Non-constant range: argument must be an integer literal」を消す方法

  • 2023年2月8日
  • 2023年11月9日
  • Swift
  • 245View
  • 0件

ForEachを使用したとき、下図のように「Non-constant range: argument must be an integer literal」という警告がでたことはありませんか?

今回はその場合の対処法をご紹介します。

対処法は至って簡単。ForEach の id を指定すればOKです。

struct ContentView: View {
    
    let list: [String] = ["a","b","c"]
    
    var body: some View {
        VStack {
            ForEach(0..<list.count, id: \.self) { val in
                Text("\(val)")
            }
        }
        .padding()
    }
}

ForEach の対象オブジェクトは一意性が保証されていることが必須であり、対象オブジェクトを一意に識別ができる値を ForEach に渡す必要があるからです。

おそらく、ForEach の処理の中で二重処理を行わないように一意に識別できる値を使用するのだと思われます。

ForEach の扱い方については、こちらのサイトを参考にさせていただきました。

カピ通信

ForEachの繰り返し処理にて出力したデータを変更(削除、並び替え)できるようにするには、SwiftUIが該当データを…