ios - '不能在不可变值上使用变异getter:'self'是不可变的'迭代时?
问题描述
有谁知道为什么self.indexCount
inForEach
给出错误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
一次获取时的任何值。
推荐阅读
- amazon-web-services - 在 Amazon Linux2 上配置 ssl 后无法启动 Apache
- jupyter-notebook - 我尝试将 python jupyter notebook 与 amazon neptune DB Instance 连接,但出现这样的错误,我该怎么办?
- javascript - 如何在 Express 4 中不再使用“app.config”配置 $routeProvider?(角度 JS)
- wordpress - 如何在mac上安装wp cli
- c++ - 以不同的比特率去交织音频数据
- python - 如何获得今天和上一个日期之间的天数差异?
- amazon-web-services - Lambda 角色没有在 SAM 模板中定义的策略
- sql-server - 多个复合索引与单个非聚集列存储索引
- google-sheets - 我可以在谷歌表格的 IFS 函数中使用二元运算符 OR 和 AND 吗?
- python-3.x - 为什么我得到一个意外的关键字参数“calculate_hit_box”