Swift Closure - 无法转换类型(_) - >()的值?预期的参数类型(() - >())?

问题描述:

我在Xcode 9,Swift 4中使用SideMenuController窗格。试图让侧面板动画工作。不能解决为什么它抛出这个错误。如果可以帮助,请提前致谢!Swift Closure - 无法转换类型(_) - >()的值?预期的参数类型(() - >())?

UIView.panelAnimation(duration, animations: { 
     self.centerPanel.frame = centerPanelFrame 
     self.set(statusUnderlayAlpha: hidden ? 0 : 1) 
    }) { _ in // THROWS ERROR - CANNOT CONVERT VALUE OF TYPE (_) ->()? TO EXPECTED ARGUMENT TYPE (() ->())? 
     if hidden { 
      self.setSideShadow(hidden: hidden) 
     } 
     completion?(updated) 
    } 

这是函数的定义:

class func panelAnimation(_ duration : TimeInterval, animations : @escaping (()->()), completion : (()->())? = nil) 

因此,大家可以看到,你不需要_ in关键字在完成关闭开始。

重写如下:

UIView.panelAnimation(duration, animations: { 
    self.centerPanel.frame = centerPanelFrame 
    self.set(statusUnderlayAlpha: hidden ? 0 : 1) 
}) { 
    if hidden { 
     self.setSideShadow(hidden: hidden) 
    } 
    completion?(updated) 
}