在接受闭包的视图中使用闭包与方法

Using a closure vs a method within a view that takes in a closure

我一直在使用 SwiftLint 和 运行 解决多个 multiple_closures_with_trailing_closure 定义的错误 here

我遇到的最大问题是 Button 我会切换一些布尔值,例如

Button(action: {self.startTimer.toggle()}) {
   ...trailing closure
}

当我关闭方法的简写闭包时

func toggleTimer() { self.startTimer.toggle() }

linting 错误消失了。我仍然不确定关于“多个关闭参数”部分的投诉是什么。

传递多个闭包参数时不应使用尾随闭包语法。

这个特定示例中的 linting 错误是什么意思?

按钮需要两次关闭,一次用于“操作”,一次用于“标签”。 SwiftLint 不希望您遗漏位于两个闭包之间的标签。它期待这个:

   Button(action: {self.startTimer.toggle()}, label: {
           ...trailing closure
        })

您的代码完全有效,只是没有按照 SwiftLint 的规范进行格式化。