Общий c параметр 'S' не может быть выведен + неоднозначная ссылка на элемент 'count' - PullRequest
0 голосов
/ 01 февраля 2020

Я столкнулся со странной ошибкой с этим кодом Swift внутри представления:

Файл 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 file 3: тот, кто возвращает Generi c параметр '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())
            }
[...]

Я потратил пару часов на поиск ответа, но безуспешно. У кого-нибудь была бы отличная идея, пожалуйста?

1 Ответ

0 голосов
/ 01 февраля 2020

Поскольку оба средства выбора по сути одинаковы, а первый компилируется, я настоятельно полагаю, что ошибка на самом деле в каком-то другом коде в теле представления.

Кроме того, второй сбойный код сборщика прекрасно компилируется для меня, когда он помещается в тело чистого представления.

Полученные сообщения об ошибках также указывают на это (я видел такие ошибки, когда ошибка была очень серьезной) где-то еще.

Я бы прокомментировал части над ошибочным кодом средства выбора, пока он не скомпилируется.

К вашему сведению: способ установки @State selectedDifficulty изначально не устанавливает выбор. Это делает:

  Picker(selection: $selectedCookingDifficulty, label: Text("")) {
    ForEach(cookingDifficulties, id: \.self) {
      Text($0)
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...