2017-10-05 27 views
0

这段代码在Swift 3中运行良好,但现在通过Xcode将代码转换为Swift 4后,它出现错误。根据我从Web服务获得的值,我正在主队列中呈现下一个场景。无法转换类型'(_) - >()?'的值到预期的参数类型'@convention(block)() - > Void'

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

回答

2

在夫特3,value参数推断为具有类型()

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

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

如果你看一下你得到的错误,它说,它预期() -> Void(如不带参数块),但你通过它(_) ->()(如与未知的一个参数块类型)。

相关问题