SwiftUI ForEach-Loops получает ошибки - PullRequest
1 голос
/ 20 февраля 2020

Я пытаюсь построить ForEach () - L oop в SwiftUI для создания элементов интерфейса, но получаю следующее сообщение об ошибке:

Невозможно определить сложное закрытие тип возврата; добавить явный тип для устранения неоднозначности

Вот мой код:

    var body: some View {
        HStack {
            HStack {
                VStack {
                    ForEach((1...10).reversed(), id: \.self) {
                        Text("\($0)")
                        Spacer()
                    }
                    Spacer()
                }
                Spacer()
            }
            Spacer()
        }
    }

Ошибка указывает на строку с оператором ForEach. Я пытался следовать уроку Пола Хадсона, см .: https://www.hackingwithswift.com/quick-start/swiftui/how-to-create-views-in-a-loop-using-foreach

1 Ответ

1 голос
/ 20 февраля 2020

Короче: удалить Spacer() из ForEach. ForEach ожидает возврата one значения типа some View. Вы можете заключить свои Text() и Spacer() в HStack или VStack, но в этом случае вы не сможете получить доступ к каждому числу в вашем массиве через синтаксис закрытия (запись $0 должна быть изменена на { element in } ). Так что следующий код будет работать:

var body: some View {
    HStack {
        HStack {
            VStack {
                ForEach((1...10).reversed(), id: \.self) { number in
                    HStack {
                        Text("\(number)")
                        Spacer()
                    }
                }
                Spacer()
            }
            Spacer()
        }
        Spacer()
    }
}
...