簡體   English   中英

.toggle() function on bool 不調用 didSet。 這是一個錯誤嗎?

[英].toggle() function on bool does not call didSet. Is this a bug?

我有一個帶有 didSet 的 @State Bool 變量。 我想在變量更改時做一些事情,因此我嘗試使用 didSet。 問題是當我使用 the.toggle() function 來切換布爾的 state 時,沒有調用 didSet。

以這段代碼為例:

import SwiftUI

struct SwiftUIView: View {
    @State var testBool = false {
        didSet {
            print("set")
        }
    }
    var body: some View {
        VStack {
            Button(action: {
                self.testBool.toggle()
            }) {
                Text("Toggle with .toggle()")
            }

            Button(action: {
                if self.testBool {
                    self.testBool = false
                } else {
                    self.testBool = true
                }
            }) {
                Text("Toggle with if")
            }
        }
    }
}

struct SwiftUIView_Previews: PreviewProvider {
    static var previews: some View {
        SwiftUIView()
    }
}

我只有 2 個按鈕: - 一個按鈕使用 .toggle() function 切換布爾的 state。 - 下一個按鈕使用基本 if/else 切換 state

使用 the.toggle() function 的頂部按鈕不會像預期的那樣在控制台中打印“set”,變量上的 didSet。 底部按鈕按預期工作。

這是一個已知的編譯器回歸SR-12407 它可能會在下一個 Xcode 版本中修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM