SwiftUi: для i в 0 ... Как решить замыкание, содержащее оператор потока управления - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь отобразить некоторые изображения, которые зависят от целого числа.

Пример с '3' Я хочу, чтобы:

enter image description here

VStack {
     Text(recette.name)
     HStack() {
           Text("Durée 20 min")
             .font(.caption)
             .fontWeight(.light)
           Text("Notes")
             .font(.caption)
             .fontWeight(.light)
           HStack(spacing: -1.0) {
                for 0 in 0...recette.avis{
                      Image(systemName: "star.fill")
                        .padding(.leading)
                        .imageScale(.small)
                        .foregroundColor(.yellow)
                 }
            }
     }
}

но код не компилируется с этой ошибкой в ​​течение.

Замыкание, содержащее оператор потока управления, нельзя использовать с конструктором функций 'ViewBuilder'

Может ли кто-нибудь мне помочь?

Спасибо.

1 Ответ

3 голосов
/ 07 ноября 2019

Вы хотите использовать ForEach, чтобы создавать свои звезды.

Ниже приведен рабочий пример.

// This is a simple struct to mock the data
struct Recette {
    let name: String = "Test"
    let avis: Int = 3
}

struct ContentView: View {

    let recette = Recette()

    var body: some View {
        VStack {
            Text(recette.name)
            HStack() {
                Text("Durée 20 min")
                    .font(.caption)
                    .fontWeight(.light)
                Text("Notes")
                    .font(.caption)
                    .fontWeight(.light)
                HStack(spacing: -1.0) {
                    ForEach(0..<recette.avis) {_ in // <- use ForEach() here
                        Image(systemName: "star.fill")
                            .padding(.leading)
                            .imageScale(.small)
                            .foregroundColor(.yellow)
                    }

                }
            }
        }
    }
}

Вот что выдает приведенный выше код:

What code produces

...