如何在作为方法参数给出的函数中将函数的参数强制转换为Any?

时间:2018-12-25 18:27:23

标签: ios swift function casting

如何在作为方法参数给出的函数中将函数的参数强制转换为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)
{
}

1 个答案:

答案 0 :(得分:2)

基本上,通用方法是正确的。

data的类型更改为T并将通用类型限制为Decodable

func method2<T : Decodable>(responseListener: @escaping (Int, T) -> Void)
{
}

下划线字符和参数标签是Swift 2的旧版,在Swift 3+中未使用