Swift 4:无法将类型“(_) -> ()”的值转换为预期的参数类型“() -> ()”或传递给不带参数的调用的参数

Swift 4: Cannot convert value of type '(_) -> ()' to expected argument type '() -> ()' or Argument passed to call that takes no arguments

使用 XCode9,测试版 3。Swift4。

statsView.createButton("Button name") { [weak self] Void in
   //stuff stuff
   self?.doSomething()
}

我遇到了数百个这样的错误,我该如何解决?

错误:

Cannot convert value of type '(_) -> ()' to expected argument type '() -> ()'

Argument passed to call that takes no arguments

我们似乎不再使用 Swift 4 中的 Void in。我是如何修复它们的:

删除Void关键字:

statsView.createButton("Button name") { [weak self] in
   //stuff stuff
   self?.doSomething()
}

您必须使用 in 或编译器

Expected ',' separator

如果没有参数,则根本不要使用 Void in

statsView.createButton("Button name") { //No "Void in" in here
   print("hi")
}