无法转换“(_) -> () 类型的值?”预期的参数类型 '@convention(block) () -> Void'

Cannot convert value of type '(_) -> ()?' to expected argument type '@convention(block) () -> Void'

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

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

在 Swift 3 中,value 参数被推断为 ().

类型

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

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

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