ios - 如何将函数的参数转换为作为方法参数给出的函数中的 Any?
问题描述
如何将函数的参数转换为作为方法参数给出的函数中的 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)
{
}
解决方案
基本上通用方法是正确的。
更改data
to的类型T
并将泛型约束为Decodable
func method2<T : Decodable>(responseListener: @escaping (Int, T) -> Void)
{
}
下划线字符和参数标签是 Swift 2 遗留的,它们在 Swift 3+ 中未使用
推荐阅读
- discord.py - 如何检查机器人是否连接到频道?| 不和谐.py
- android - Android Timber 多次记录
- html - 可以以任何方式引导移动网页上的 Voice Over 吗?
- pagination - 分页中的jqGrid行限制
- excel - Excel - 根据单元格中的文本更改图表数据的来源
- asp.net - 适用于 ASP .Net 的基本 Azure DevOps 流程
- ios - 在所有 UIAlertControllers 被解雇后需要采取行动
- python - 在scrapy中使用for循环的多个url
- assembly - 如何使用预定义的常量作为内存地址?
- python - FT_Get_Glyph_Name 返回的“uniE0A1”是什么意思?