我想在需要时将函数用作另一个函数的完成。但是我有一个最好用代码描述的麻烦:
...{
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)?
类型的东西的感觉。 最佳答案
myCompletion
的类型很好,问题在这里:
myCompletion = myCompletionFunction()
您没有将
myCompletion
分配给myCompletionFunction
;您正在调用myCompletionFunction
并将其返回值分配给myCompletion
,从而导致类型不匹配。将该行更改为:
myCompletion = myCompletionFunction