Swift:如何将函数类型值设置为可选变量?

时间:2015-03-17 23:39:10

标签: ios function swift variables optional-parameters

我想在需要时使用函数作为另一个函数的完成。但是我遇到了最好用代码描述的问题:

...{
   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)?类型的东西。

1 个答案:

答案 0 :(得分:5)

myCompletion的类型很好,问题在于:

myCompletion = myCompletionFunction()

您没有myCompletion分配给myCompletionFunction;您正在致电myCompletionFunction并将其返回值myCompletion,导致类型不匹配。

将该行更改为:

myCompletion = myCompletionFunction