这段代码在Swift 3中运行良好,但是现在在Xcode将代码转换为Swift 4后,它会抛出错误。我根据从Web服务获得的值,在主队列中呈现下一个场景。
DispatchQueue.main.async {
[weak self] value in
self?.router?.invokeTheSegueAfterTheWebService(navigationKey: arrayElementsGot["questionType"] as! String, givenViewController: self!)
}
答案 0 :(得分:2)
在Swift 3中,推断value
参数的类型为()
。
Swift 4不再允许您为块提供单个参数,而上下文应该采用不同数量的参数。所以你的代码看起来应该是
DispatchQueue.main.async {
[weak self] in
self?.router?.invokeTheSegueAfterTheWebService(navigationKey: arrayElementsGot["questionType"] as! String, givenViewController: self!)
}
如果你看看你得到的错误,它会说它预期() -> Void
(例如一个没有参数的块)但你传递了它(_) -> ()
(例如一个带有一个未知类型参数的块)