无法编译
func showAlert(_ title: String, message: String,
onOk: (()->())? = nil,
onAnotherAction:((anotherActionTitle : String)-> Void)? = nil) {
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
let ok = UIAlertAction(title: "OK", style: .default) { (action) in
onOk?()
}
let anotherAction = UIAlertAction(title: anotherActionTitle, style: .default) { (action) in
onAnotherAction?()
}
alertController.addAction(ok)
alertController.addAction(anotherAction)
...
}
此编译
func showAlert(_ title: String, message: String,
onOk: (()->())? = nil,
onAnotherAction:((String)-> Void)? = nil)
但是,我必须为 onAnotherAction()的标题 anotherActionTitle 声明另一个参数。
有没有办法使第一种方法起作用?谢谢!
答案 0 :(得分:0)
由于SE-0111是Swift 3的一部分,因此不再可能为闭包类型使用命名参数。
Swift核心团队制定了一个概念路线图,用于在将来的某个时刻恢复命名的闭包参数,但是我不知道实现的时间表:
https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160711/024331.html
答案 1 :(得分:0)
但是,我必须为
anotherActionTitle
的标题onAnotherAction()
声明另一个参数
不,您不必这样做。只需将其作为整个函数的常规参数即可:
func showAlert(_ title: String, message: String,
onOk: (()->())? = nil,
anotherActionTitle: String? = nil,
onAnotherAction: (()->())? = nil) {
函数的其余部分将随后编译并正常工作。