Hel*_*rld 4 ios swift swift5 swiftui
有谁知道为什么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")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是故意的。在 SwiftUI 中,只有@State变量可以更改。你不能使用lazy var这样的。用计算属性替换它:
var indexCount : Int { array[0].count }
Run Code Online (Sandbox Code Playgroud)
这是更好,无论如何,因为它永远是正确的:indexCount将始终是当前的大小array[0]),而你的方式,该值将冻结在无论count是在第一时间就被取出。
| 归档时间: |
|
| 查看次数: |
1777 次 |
| 最近记录: |