Swift - CompletionHandler 模板化为函数中的参数 (UsingObjectMapper)
Swift - CompletionHandler templated as parameter in function (UsingObjectMapper)
我正在尝试将 completionHandler 作为参数传递给函数(这里没问题)。
我的问题是我有多种可能的精确类型,我可以在我的 completionHandler 函数中接收这些类型。
所以我想,"Let's use templates",我试过了。
这是我要使用的方案:
FuncA(作为 MyType 的 completionHandler?)
-> FuncB(..){completionHandler(可映射?)}
-> FuncC(sender: T?){performSegueWithIdentifier("segue", sender)}
问题:
Func A 给我打印了一个错误
Func B 似乎没问题
Func C 好像没问题
你们知道怎么做吗,我还不习惯模板??
感谢您的帮助:)
我不相信您可以像在方法签名中那样转换 completionHandler。您将需要在方法体内进行类型转换。例如
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
}
}
我正在尝试将 completionHandler 作为参数传递给函数(这里没问题)。 我的问题是我有多种可能的精确类型,我可以在我的 completionHandler 函数中接收这些类型。
所以我想,"Let's use templates",我试过了。
这是我要使用的方案: FuncA(作为 MyType 的 completionHandler?) -> FuncB(..){completionHandler(可映射?)} -> FuncC(sender: T?){performSegueWithIdentifier("segue", sender)}
问题: Func A 给我打印了一个错误 Func B 似乎没问题 Func C 好像没问题
你们知道怎么做吗,我还不习惯模板?? 感谢您的帮助:)
我不相信您可以像在方法签名中那样转换 completionHandler。您将需要在方法体内进行类型转换。例如
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
}
}