有谁知道为什么self.indexCount
中的ForEach
给出错误Cannot use mutating getter on immutable value: 'self' is immutable
错误?我可以提供aView
和indexCount
,但这不是很方便。我没有更改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
的位置上。