web-dev-qa-db-fra.com

Swift 4: Impossible de convertir la valeur de type '(_) -> ()' en type d'argument attendu '() -> ()' ou Argument passé à l'appel qui ne prend aucun argument

En utilisant XCode 9, Beta 3. Swift 4.

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

J'obtiens des centaines d'erreurs comme celle-ci, comment les corriger?

Les erreurs:

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

Argument passed to call that takes no arguments
15
Esqarrouth

Il semble que nous n'utilisions pas Void in in Swift 4 plus. Comment je les ai réparés:

Supprimez le mot clé Void:

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

Vous devez utiliser in ou le compilateur avec plainte avec

Expected ',' separator

S'il n'y a pas d'arguments, n'utilisez pas Void in du tout.

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