如何在作为方法参数给出的函数中将函数的参数强制转换为Any?
struct InitializationStaticData: Decodable {}
func method1(responseListener: @escaping (_ status:Int, _ data: InitializationStaticData?) -> Void)
{
let dsa = responseListener as! (Int, Any?) -> Void // EXC_BREAKPOINT
let asd = responseListener as! (Int, Decodable?) -> Void // EXC_BREAKPOINT
method2(responseListener: sdd)
}
我试图像这样投射它:
func method2<T>(responseListener: @escaping (_ status: Int, _ data: Any?) -> Void)
{
}
答案 0 :(得分:2)
基本上,通用方法是正确的。
将data
的类型更改为T
并将通用类型限制为Decodable
func method2<T : Decodable>(responseListener: @escaping (Int, T) -> Void)
{
}
下划线字符和参数标签是Swift 2的旧版,在Swift 3+中未使用