我刚刚将我的Xcode从11.3更新到11.4,用SwiftUI编写的项目开始有了不同的表现。我曾经为布尔值调用toggle()函数,它用来触发didSet属性观察者,但是它不再工作了。
假设我们有一个名为State的isSettingOn属性。我以前管这叫:
isSettingOn.toggle()
触发了财产的didSet观察者。如果我这么说的话:
isSettingOn = true
起作用了。
我的项目都是基于这种行为,现在这个变化基本上破坏了一切。有人知道我在这里做了什么错事吗?
编辑:
添加了演示代码:
struct ContentView: View {
@State var isSettingOn: Bool = true {
didSet {
print("didSet isSettingOn")
}
}
var body: some View {
Button(action: {
self.isSettingOn = true // will trigger didSet
self.isSettingOn.toggle() // won't trigger didSet
}) {
Text("Toggle isSettingOn")
}
}
}发布于 2020-05-18 22:47:33
这是Xcode 11.4 and 11.4.1中的一个bug,在Xcode 11.5 (Beta)中是用Swift 5.2.4修复的。
https://stackoverflow.com/questions/60907882
复制相似问题