Неоднозначная ссылка с инструментом выбора в Swift UI - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь сделать сборщик с SwiftUI.Я следую учебному пособию, но у меня нет такого же результата.Существует неоднозначная ссылка на self.category.count и self.category [$ 0].После целого дня я все еще не знаю, как это исправить ...

import SwiftUI

struct Picker : View {
    var category = ["Aucun", "BF Glaive", "Baguette", "Negatron", "Larme", "Ceinture", "Arc", "Cotte", "Spatule"]
    @State private var selectedCategory = 0

    var body: some View {
        VStack {
            Picker(selection: $selectedCategory, label: Text("Item")) {
                ForEach(0 ..< self.category.count) {
                    Text(self.category[$0])
                        .tag($0)
                }
            }
            Text("Selected : \(category[selectedCategory])")
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Чтобы разрешить конфликты имен между модулями, вы можете:

  1. Переименовать ваш Picker во что-то другое.
  2. Использовать полное (полное) имя:

    SwiftUI.Picker(selection: $selectedCategory, label: Text("Item")) {
    
0 голосов
/ 03 июля 2019

Сообщение об ошибке Ambiguous reference to member 'count’ вводит в заблуждение.У вас есть конфликт имен между SwiftUI.Picker и вашей Picker структурой.Просто измените имя вашей структуры на что-то другое, чем Picker.Например:

struct CategoryPicker : View {
    // ...
}

Кроме того, вы можете разрешить конфликт имен между модулями, указав полное имя для SwiftUI.Picker (как указал Султан):

SwiftUI.Picker(selection: $selectedCategory, label: Text("Item")) {
    // ...
}

ОднакоЯ бы не советовал эту опцию, если вы не собираетесь заменять SwiftUI.Picker везде в вашем приложении.Ваш код включает в себя массив category и представление Text, поэтому маловероятно, что это то, что вам нужно.

Если приложению в конечном итоге потребуется OtherPicker с SwiftUI.Picker и именем модуля будетОпять пропущено, будет еще более запутанным, чтобы отследить ошибку - и вы уже потратили на нее «целый день».Поэтому лучше всего избегать этой возможности, вообще не вводя конфликт:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...