SwiftUI:从其他组件提供for循环上限

Posted

技术标签:

【中文标题】SwiftUI:从其他组件提供for循环上限【英文标题】:SwiftUI: provide for loop upper limit from other component 【发布时间】:2020-02-03 13:55:14 【问题描述】:

我的问题如下,我有一个产品视图,我在其中加载到视图数据,我需要添加基于星级系统的评级显示。

呼叫:

     var rating = 4.22
     RatingView(rating)

输入:我有双重格式的评分,我将这些数据提供给 RatingView。

输出:它基本上是一个基于提供相同数量的星数的楼层函数

问题:问题是无论我使用 for 还是 forEach 循环,我总是会出错。 我尝试了以下几种方式:

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

出现错误:无法将 '() -> some View' 类型的值转换为预期的参数类型 '() -> _'

        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”一起使用

我真的不知道如何更改循环,以便它可以显示需要的内容......

【问题讨论】:

你试过四舍五入吗? developer.apple.com/documentation/swift/double/2884722-round 舍入不是问题,因为从 double 到 int 的转换几乎相同。我在一段时间内迭代时遇到错误。 【参考方案1】:

ForEach 需要排序数据或范围,因此您需要类似以下内容(不考虑您如何四舍五入您的评分)

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

【讨论】:

以上是关于SwiftUI:从其他组件提供for循环上限的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI如何更改for循环中的值

过滤 For Each 循环 - swiftui

在 SwiftUI 中使用 For 循环获取 Firebase 数据

SwiftUI 在 For Each 中获取下一个循环的值

SwiftUI List 和 For Each 循环与空白元素

FOR循环中的上界在循环中没有改变,为啥?