无法使用 $viewModel 为表达式生成诊断

问题描述 投票:0回答:0

我在子视图中有一个选择器:

struct EventPickerView: View {
    @Binding private(set) var selection: String
    @State var labelText: String
    @State var pickerData: [String]
    
    init(
        pickerData: [String],
        selection: Binding<String>,
        labelText: String
    ) {
        self.pickerData = pickerData
        self.labelText = labelText
        self._selection = selection
    }

    var body: some View {
        VStack {
            HStack {
                Text(labelText)
                    .font(.headline)
                    .foregroundColor(.white)
                Spacer()
                Picker(selection: $selection) {
                   ForEach(pickerData, id: \.self) { 
                   item in
                     Text(item)
                   }
                } label: {
                }
                
                .foregroundColor(.white)
                .accentColor(.white)
            }
            .padding(5)
        }
    }
}

像这样添加到 parentView:

struct AddEventView<ViewModel: AddEventViewModeling & ObservableObject>: View {
    
@ObservedObject var viewModel: ViewModel
    
init(viewModel: ViewModel) {
    self.viewModel = viewModel
}

   @ViewBuilder
   var body: some View {
   VStack {
          // other views 
          EventPickerView(pickerData: viewModel.eventCreatingPickerFields?.eventParticipants ?? [String](), selection: $viewModel.fieldType, labelText: "Match Type")            
         // other stuff
      }
   }
}

在我的 viewModel 中,我有一个

@Published
var,我想观察它在 Picker

中的变化
final class MyViewModel: ObservableObject {

    @Published var fieldType: String = ""

}

问题是我收到警告:

未能对表达产生诊断;请提交错误 报告(https://swift.org/contributing/#reporting-bugs)并包括 项目

每当我尝试引用我的 viewModel (

$viewModel.fieldType
)。但是,如果我将其更改为
.constant("Try")
,警告就会消失。

swift swiftui binding combine
© www.soinside.com 2019 - 2024. All rights reserved.