SwiftUI报错:可变运算符左侧不可变,var变量无法修改?
问题原因及解决方案
问题根源
你遇到的报错核心原因是:SwiftUI的View默认是值类型(struct),而taps是这个结构体里的普通存储属性。body属于计算属性,在计算属性的闭包(Button的action)里尝试修改self的属性时,结构体默认是不可变的,因此编译器会提示"self is immutable"。
解决方案
给taps加上@State属性包装器,让SwiftUI接管这个属性的可变性管理:
@State private var taps: Int = 0 var body: some View { Button(action: { taps += 1 }) { Text("Tap count: \(taps)") } }
原理说明
@State会把属性的实际存储从结构体内部转移到SwiftUI专门的内存管理区域,即便结构体本身是值类型,也能安全修改该属性。同时,当taps的值发生变化时,SwiftUI会自动触发视图刷新,同步更新界面显示。
内容的提问来源于stack exchange,提问作者Cam
相关产品推荐
相关产品推荐

