You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:52:31