无法将类型“ ClosedRange <Int>”的值转换为预期的参数类型“ Range <Int>”

时间:2020-07-22 03:04:46

标签: swift type-conversion swiftui

我有此代码:

VStack {
    ForEach(0...2) { i in
        HStack {
            ForEach(0...2) { j in
                Text("test")
            }
        }
    }
}

这在两个ForEach语句中都给我带来错误Cannot convert value of type 'ClosedRange<Int>' to expected argument type 'Range<Int>'

我已经看到有关此错误的线程,并且有点了解范围函数的工作原理,但实际上却不是。我想知道如何解决此错误。

2 个答案:

答案 0 :(得分:3)

可以使用ClosedRange,但可以使用不同的ForEach构造函数,提供id,例如

    VStack {
        ForEach(0...2, id: \.self) { i in
            HStack {
                ForEach(0...2, id: \.self) { j in
                    Text("test")
                }
            }
        }
    }

答案 1 :(得分:2)

对于类型为..<而不是...的范围,可以使用Range<Index>代替ClosedRange<Index>

 VStack {
        ForEach(0..<2) { i in
            HStack {
                ForEach(0..<2) { j in
                    Text("test")
                }
            }
        }
    }