如何修复iOS中的Swift警告“多个闭包与尾随闭包违规”

jpfvwuh4  于 2023-01-25  发布在  Swift
关注(0)|答案(1)|浏览(142)

我是Swift开发的新手,我收到了以下警告:
具有尾部闭包冲突的多个闭包:传递多个闭包参数(multiple_closures_with_trailing_closures)时,不应使用结尾闭包语法。
我真的不明白这些警告是什么意思,以及如何修复它。我已经在谷歌上搜索了Stackoverflow上的其他帖子,但还是不明白。
我的代码如下所示:

Button(action: {
  address = "123 Fakestreet"
  onSubmit()
}) {
  Text("Start search")
}
    • 问题:**如何重构代码,使功能保持不变,但警告消失?
dhxwm5r4

dhxwm5r41#

你只需要为两个参数都使用标签,而不要使用这个简短的版本,因为最后一个闭包省略了标签:

Button(action: {
    address = "123 Fakestreet"
    onSubmit()
}, label: {
    Text("Start search")
})

当事情变得更复杂时,我建议你把所有东西都重构成方法,然后你可以这样使用它:

private func onAddressButtonPressed() {
    address = "123 Fakestreet"
    onSubmit()
}

Button(action: onAddressButtonPressed) {
    Text("Start search")
}

请注意,在方法onAddressButtonPressed(而不是onAddressButtonPressed())之后没有括号。
您可以在适当的时候对标签部分执行相同的操作

private func onAddressButtonPressed() {
    address = "123 Fakestreet"
    onSubmit()
}

private func addressButtonContent() -> some View {
    Text("Start search")
}

Button(action: onAddressButtonPressed, label: addressButtonContent)

相关问题