本文介绍了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()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-26 23:50