xcode Swift无法将类型'()'的值转换为预期的参数类型'()->Void'

wkyowqbh  于 2022-11-30  发布在  Swift
关注(0)|答案(1)|浏览(216)

我对Swift很陌生,遇到了一个令人费解的错误。
我在视图中有一个菜单:

Menu("Report an issue")
            {
                Button("Pothole", action: passReport(rtype: "Pothole"))
                Button("Street Obstruction", action: passReport(rtype: "Street Obstruction"))
                Button("Weather Damage", action: passReport(rtype: "Weather Damage"))
                Button("Vehicular Accident", action: passReport(rtype: "Vehicular Accident"))
                Button("Other Issue", action: passReport(rtype: "Other Issue"))
            }

然后,在此视图中定义一个名为passReport的函数,如下所示:

func passReport(rtype: String)
    {
        let lat1:String = "\(LocationHelper.currentLocation.latitude)"
        let long1:String = "\(LocationHelper.currentLocation.longitude)"

        dataManager.addReport(id: "ID goes here", latitude: lat1, longitude: long1, reportType: rtype)
        
    }

我收到错误:
Cannot convert value of type '()' to expected argument type '() -> Void'
在我的菜单中的所有五行上,直到最近,这个函数没有参数,工作得很好,我最近添加了reportType字段到我的dataManager,并添加了一个参数到函数,现在它不工作了。我确信这是简单的,我检查了其他问题,但他们没有回答我的问题。谢谢

bkhjykvo

bkhjykvo1#

你需要传递一个闭包给button动作,而不是像现在这样void。
你可以试试

Button("Street Obstruction", action: { passReport(rtype: "Street Obstruction") })

相关问题