无法转换类型的值'(_) - > ()&#39?;预期参数类型' @convention(block)() - >虚空'

时间:2017-10-05 14:15:57

标签: ios swift xcode9 swift4

这段代码在Swift 3中运行良好,但是现在在Xcode将代码转换为Swift 4后,它会抛出错误。我根据从Web服务获得的值,在主队列中呈现下一个场景。

DispatchQueue.main.async {
    [weak self] value in
    self?.router?.invokeTheSegueAfterTheWebService(navigationKey: arrayElementsGot["questionType"] as! String, givenViewController: self!)
}

1 个答案:

答案 0 :(得分:2)

在Swift 3中,推断value参数的类型为()

Swift 4不再允许您为块提供单个参数,而上下文应该采用不同数量的参数。所以你的代码看起来应该是

DispatchQueue.main.async {
    [weak self] in
    self?.router?.invokeTheSegueAfterTheWebService(navigationKey: arrayElementsGot["questionType"] as! String, givenViewController: self!)
}

如果你看看你得到的错误,它会说它预期() -> Void(例如一个没有参数的块)但你传递了它(_) -> ()(例如一个带有一个未知类型参数的块)