swift - 已发布值上的 SwiftUI toggle() 函数停止使用 Swift 5.2 触发 didSet
问题描述
我刚刚将我的 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")
}
}
}
解决方案
这是一个错误Xcode 11.4 and 11.4.1
,它已Xcode 11.5 (Beta)
在Swift 5.2.4
.
推荐阅读
- r - 按组进行成对 ks 检验
- java - 如何同时接受 JSON 和 XML?
- powershell - Invoke-webrequest - 通过自定义 Chrome 配置文件获取请求
- regex - 查找以冒号结尾的大写名称
- automation - 有没有办法制作一个批处理文件,从 USB 闪存驱动器一个一个地执行启动安装程序?
- php - wordpress redirect users to the same URL they request appending parameters according to role
- asp.net-core - .NET5 禁用引用的复制
- python - 很少有日期在列中具有字符串格式
- xamarin.forms - 每当我使用 pich 触摸我的两个手指来放大和缩小颜色时,就会出现 Android Xamarin
- python - Python:如何提取2个常量子字符串之间的变量