我想在需要时使用函数作为另一个函数的完成。但是我遇到了最好用代码描述的问题:
...{
var myCompletion : (() -> Void)? = nil
if condition {
myCompletion = myCompletionFunction() // <==========problem here
}
someMethodThatCouldHaveCompletion(myCompletion)
...
}
func someMethodThatCouldHaveCompletion(completion: (() -> Void)?){
...
}
func myCompletionFunction() {
...
}
我有一个错误:Cannot assign a value of type '()' to a value of type '(()->Void)?'
我在将函数设置为myCompletion变量后尝试添加as! (() -> Void)?
,但收到另一个错误Cannot downcast from '()' to a more optional type '(()->Void)?'
那么,有没有办法解决它?我有一种感觉,我想念completion: (() -> Void)?
类型的东西。
答案 0 :(得分:5)
myCompletion
的类型很好,问题在于:
myCompletion = myCompletionFunction()
您没有myCompletion
分配给myCompletionFunction
;您正在致电myCompletionFunction
并将其返回值myCompletion
,导致类型不匹配。
将该行更改为:
myCompletion = myCompletionFunction