Функция SwiftUI toggle () для Опубликованных значений перестала запускать didSet с Swift 5.2 - PullRequest
0 голосов
/ 29 марта 2020

Я только что обновил свой 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")
        }
    }
}
...