SwiftUI ForEach-Loop 出现错误

Posted

技术标签:

【中文标题】SwiftUI ForEach-Loop 出现错误【英文标题】:SwiftUI ForEach-Loops getting errors 【发布时间】:2020-02-20 09:46:33 【问题描述】:

我正在尝试在 SwiftUI 中构建一个 ForEach()-Loop 来构建 UI 元素,但我收到了以下错误消息:

无法推断复杂的闭包返回类型;添加显式类型以消除歧义

这是我的代码:

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

错误指向与 ForEach-Statement 的行。我尝试按照 Paul Hudson 的教程进行操作,请参阅:https://www.hackingwithswift.com/quick-start/swiftui/how-to-create-views-in-a-loop-using-foreach

【问题讨论】:

【参考方案1】:

简而言之:从ForEach 中删除Spacer()ForEach 期望返回some View 类型的一个值。 您可以将Text()Spacer() 包装成HStackVStack,但在这种情况下,您无法通过闭包语法访问数组中的每个数字($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()
    

【讨论】:

这解决了我的问题,谢谢。我刚开始使用 SwiftUI,有些错误很奇怪。

以上是关于SwiftUI ForEach-Loop 出现错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQL 命令从我的 DataTable 对象中使用 foreach-loop 更新 C# 中的 MS Access 数据库?

为啥我的 SwiftUI JSONDecoder 会出现致命错误?

SwiftUI:尝试加载本地 JSON 数据时,Canvas 出现预览错误

Swift / SwiftUI:如何检查环境 /binding var 是不是为空字符串(.isEmpty 出现构建错误)

在代码“使用未解析的标识符 Firestore”中出现错误,但程序运行良好 SwiftUI

编辑 Core Data 类实例字符串时,SwiftUI List 中的 TextField 出现光标定位错误?