Я только что обновил свой Xcode до 11.4 с 11.3, и мой проект, написанный на 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")
}
}
}