我在View中使用Swift代码遇到一个奇怪的错误:

迅捷文件1

[...]
    let cookingDifficulties: [String] = ["Very easy","Easy","Medium","Difficult"]
[...]


Swift文件2:一个正在编译

[...]
    Picker(selection: $selectedCookingDifficulty, label: Text("")) {
                ForEach(0..<cookingDifficulties.count) {
                    Text(cookingDifficulties[$0])
                }
            }.pickerStyle(SegmentedPickerStyle())
[...]


Swift文件3:无法推断出返回通用参数“ S”的错误

[...]
            HStack{
                Text("Difficulty: ")
                Picker(selection: $selectedCookingDifficulty, label: Text("")) {
                    ForEach(0..<cookingDifficulties.count) { //--> Ambiguous reference to member 'count'
                        Text(cookingDifficulties[$0]) //--> Generic parameter 'S' could not be inferred
                    }
                }.pickerStyle(SegmentedPickerStyle())
            }
[...]


我花了几个小时来寻找答案,但没有成功。
任何人都有一个好主意吗?

最佳答案

由于两个选择器本质上是相同的,并且第一个选择器可以编译,因此我强烈认为错误实际上是视图主体中的其他代码。

同样,当放置在干净的视图中时,第二个失败的选择器代码对于我来说也可以编译。

收到的错误消息也表明了这一点(当错误在其他地方时,我已经看到了此类错误。

我会在失败的选择器代码上方注释部分,直到编译为止。

仅供参考:
设置@State selectedDifficulty的方式最初不会设置选择。这样做:

  Picker(selection: $selectedCookingDifficulty, label: Text("")) {
    ForEach(cookingDifficulties, id: \.self) {
      Text($0)
    }
  }

10-08 05:55