有谁知道为什么self.indexCount中的ForEach给出错误Cannot use mutating getter on immutable value: 'self' is immutable错误?我可以提供aViewindexCount,但这不是很方便。我没有更改indexCount。这是SwiftUI错误还是故意的?

struct aView: View {
    let array: [[String]]
    lazy var indexCount: Int = array[0].count

    var body: some View {
        VStack {
            ForEach(0..<self.indexCount, id: \.self) { index in
                Text("Hello World")
           }
        }
    }
}

最佳答案

这是故意的。在SwiftUI中,只有@State变量可以更改。您不能使用这样的lazy var。将其替换为计算属性:

var indexCount : Int { array[0].count }

无论如何,这会更好,因为它总是正确的:indexCount始终是array[0]的当前大小),而按照您的方式,该值将冻结在首次获取count的位置上。

08-28 01:00