【发布时间】:2020-06-12 13:39:45
【问题描述】:
尝试在 SwiftUI 视图中设置计算属性 s 会导致编译器错误“无法分配给属性:'self' 是不可变的”。
我该如何调用 setter?
struct Test: View{
@State var _s = "test"
@State var _s2 = true
private var s : String
{ get { _s }
set (new)
{ _s = "no test"
_s2 = false
// do something else
}
}
var body: some View
{ Text("\(s)")
.onTapGesture {
self.s = "anyting" // compiler error
}
}
}
【问题讨论】:
-
您实际上是在尝试复制
@State行为...为什么?视图是结构,值,它不能从内部修改自己,这就是为什么有@State - 它是为了你尝试做的事情。就用它吧。 -
@Asperi 我想在设置s的时候改变一些其他的状态,我会扩展例子
标签: swift swiftui computed-properties