我想在需要时使用函数作为另一个函数的补全。但我有一个用代码来描述的问题:
...{ 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)?'
Cannot assign a value of type '()' to a value of type '(()->Void)?'
我试图添加 as! (() -> Void)? 将函数设置为myCompletion变量后,但收到另一个错误 Cannot downcast from '()' to a more optional type '(()->Void)?'
as! (() -> Void)?
Cannot downcast from '()' to a more optional type '(()->Void)?'
那么,有办法解决它吗?我觉得我错过了 completion: (() -> Void)? 类型
completion: (() -> Void)?
类型 myCompletion 很好,问题就在这里:
myCompletion
myCompletion = myCompletionFunction()
您没有分配 我的完成 到 myCompletionFunction ; 你在打电话 myCompletion函数 并将其返回值分配给 我的完成 ,导致类型不匹配。
我的完成
myCompletionFunction
myCompletion函数
将该行更改为:
myCompletion = myCompletionFunction