【问题标题】:How to fix Swift warning in iOS "Multiple Closures with Trailing Closure Violation"如何修复 iOS 中的 Swift 警告 \"Multiple Closures with Trailing Closure Violation\"
【发布时间】:2023-01-23 21:38:20
【问题描述】:

我是 Swift 开发的新手,收到以下警告:

Multiple Closures with Trailing Closure Violation:尾随闭包 传递多个闭包参数时不应使用语法 (multiple_closures_with_trailing_closure)。

我真的不明白警告的含义以及如何解决它。我已经用谷歌搜索并查看了 Stackoverflow 上的其他帖子,但无法全神贯注。

我的代码如下所示:

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

问题:我如何重构我的代码以使功能保持不变但警告消失?

【问题讨论】:

    标签: ios swift swiftui


    【解决方案1】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 2019-08-08
      • 2020-11-28
      • 2017-10-25
      • 2017-07-03
      • 1970-01-01
      • 2017-09-21
      相关资源
      最近更新 更多