我正在尝试将completionHandler作为参数传递给函数(这里没问题)。 我的问题是我可以在completionHandler函数中接收多个精确类型。
所以我想,“让我们使用模板”,我试过了。
这是我想要使用的方案: FuncA(completionHandler为MyType?) - > FuncB(..){completionHandler(可映射?)} - > FuncC(发件人:T?){performSegueWithIdentifier(“segue”,sender)}
问题: Func A正在打印错误 功能B似乎没问题 Func C似乎没问题
你是否知道如何做到这一点,我不习惯模板? 感谢您的帮助:))
答案 0 :(得分:1)
我不相信你可以在方法签名中像这样投射完成手柄。您需要在方法体内进行类型转换。例如
typealias handler = () -> Array<AnyObject>
funcA(handler)
func funcA<T>(completion: T?) -> funcB {
if let completion = completion as? handler {
let array = completion()
//do whatever you want here
}
}