SwiftUI 中可观察 class 中可选数据类型的选择器?

Picker for optional data type in observable class in SwiftUI?

我遇到了与 Picker for optional data type in SwiftUI? 非常相似的问题。

不同之处在于,我在可观察的 class 中引用了一个可选项。

我的代码如下:

enum Flavor: String, CaseIterable, Identifiable {
    case chocolate
    case vanilla
    case strawberry

    var id: String { self.rawValue }
}
class cl1: ObservableObject {
    @Published var fl: Flavor?
}
struct ContentView: View {
    @State private var selectedFlavor: cl1 = cl1()
    var body: some View {

        Picker("Flavor", selection: $selectedFlavor.fl) {
            Text("Chocolate").tag(Flavor.chocolate as Flavor?)
            Text("Vanilla").tag(Flavor.vanilla as Flavor?)
            Text("Strawberry").tag(Flavor.strawberry as Flavor?)
        }

            .padding()
    }
}

尽管我遵循了其他答案,但一旦我使用 class 对象,它就会失败。

我需要更改什么才能使其正常工作?

当使用 ObservableObject 时,您应该使用 @StateObject 属性 包装器而不是 @State -- 这将允许您的 View 观看ObservableObject

@Published 属性更新
@StateObject private var selectedFlavor: cl1 = cl1()