使用默认参数值声明协议函数

时间:2018-03-05 16:22:08

标签: swift callback optional swift-protocols completion

我希望此功能在协议中:

func slideToRight(currentViewController viewController: UIViewController, completion: ((Bool)->())? = nil) {
// do some stuff
}

但是当我写这样的协议时:

protocol SomeDelegate { 
func slideToRight(currentViewController viewController: UIViewController, completion: ((Bool)->())? = nil) 
}

我收到了一个错误:

  

协议方法中不允许使用默认参数

我知道,我可以用这种方式定义签名:

protocol SomeDelegate { 
func slideToRight(currentViewController viewController: UIViewController, completion: ((Bool)->())?) 
}

但是,我将无法调用缺少“完成”字样的功能:

slideToRight(currentViewController viewController: vc)

1 个答案:

答案 0 :(得分:2)

不幸的是,协议中不允许使用可选参数,但您可以通过创建协议扩展来解决此问题:

jQuery(".bizinfo h4").text(function () {
    return jQuery(this).text().replace("test", ", "); 
});