首页 > 解决方案 > 在接受闭包的视图中使用闭包与方法

问题描述

我一直在使用 SwiftLint 并遇到了这里multiple_closures_with_trailing_closure定义的多个错误。

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

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

当我关闭一个方法的短手闭包时

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

掉毛错误消失了。我仍然不确定关于“不止一个关闭论点”部分的投诉是什么。

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

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

标签: swiftswiftlint

解决方案


Button 需要两个闭包,一个用于“动作”,一个用于“标签”。SwiftLint 不希望你去掉位于两个闭包之间的标签。它期待这个:

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

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


推荐阅读