本文介绍了iOS 13.4:使用toggle() 时不再为@Published Bool 调用didSet()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在 iOS 13.4 之前,我使用属性观察器更新 @Published Bool 值的 UserDefaults
Until iOS 13.4 I was using a property observer to update the UserDefaults for a @Published Bool value
@Published var mutedAudio: Bool = UserDefaults.standard.bool(forKey: "mutedAudio") {
didSet { UserDefaults.standard.set(self.mutedAudio, forKey: "mutedAudio") }
}
在 iOS 13.4 的第一个 beta 版中,如果我在 SwiftUI 中使用 toggle() 方法,则不再调用 didSet(),并且我必须使用逻辑否定:
With the first beta of iOS 13.4 didSet() is not called anymore if I use in SwiftUI the toggle() method and I must use a logical negation:
Button(action: {
// self.settings.mutedAudio.toggle() doesn't work in iOS 13.4
self.settings.mutedAudio = !self.settings.mutedAudio // workaround
}) {
Image(systemName: settings.mutedAudio ? "speaker.slash.fill" : "speaker.2.fill").resizable().frame(width: 24, height: 24)
}
还有比等待下一个 iOS 13.4 测试版更好的解决方案吗?
Is there a better solution than waiting for the next iOS 13.4 beta?
推荐答案
今天的 Xcode 11.5 Swift 5.2.4 已经解决了.好的!
It has been solved with today's Xcode 11.5 Swift 5.2.4. Good!
这篇关于iOS 13.4:使用toggle() 时不再为@Published Bool 调用didSet()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!