SwiftUI: обеспечить верхний предел l oop от другого компонента - PullRequest
1 голос
/ 03 февраля 2020

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

Вызов:

     var rating = 4.22
     RatingView(rating)

Входные данные: у меня есть рейтинг в двойном формате, и я предоставляю RatingView эти данные.

Выходные данные: Это в основном функция пола, основанная на числе, снабженном таким же количеством звездочек enter image description here

Проблема: Проблема в том, что я всегда получаю ошибку, независимо от того, использую я for или forEach l oop. Я попытался следующими способами:

            HStack(alignment: .center, spacing: 5) {
            ForEach(Int(rating), id: \.self) { _ in
                Image(systemName: "star.fill")
                    .font(.system(size: 8, weight: .regular))
                    .foregroundColor(Color.yellow)
            }
        }

с ошибкой: не удается преобразовать значение типа '() -> некоторое представление' в ожидаемый тип аргумента '() -> _'

или

        HStack(alignment: .center, spacing: 5) {
        for index in 0..<Int(rating) {
            Image(systemName: "star.fill")
                .font(.system(size: 8, weight: .regular))
                .foregroundColor(Color.yellow)
        }

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

Я действительно не знаю, как изменить l oop, чтобы он мог отображать то, что нужно ...

1 Ответ

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

ForEach ожидает упорядоченные данные или диапазон, поэтому вам нужно что-то вроде следующего (без учета того, как вы округляете свой рейтинг)

ForEach(0..<Int(rating), id: \.self) { _ in
...