将类类型传递给泛型

Posted

技术标签:

【中文标题】将类类型传递给泛型【英文标题】:Passing class type to generic 【发布时间】:2016-05-19 19:38:30 【问题描述】:

在下面的代码中,我如何将一个类传递给 responseType ?

func sendGetRequest(url:String,
                   request: String,
                   responseType: AnyClass,
                  completion: (AnyObject?, ServerError?)-> Void) 
Alamofire.request(.GET, url, parameters: nil, encoding: .JSON, headers: headers)
      .validate()
      .responseObject  (response: Response<**responseType**, NSError>) in

...


目前 AnyClass 不工作它说“responseType 不是类型” 如果我将 responseType 替换为实际的类,它就可以工作。但我想让函数通用,并且 responseType 可以是任何类以正确映射。

【问题讨论】:

【参考方案1】:

如果这是您尝试使用的方法:

https://github.com/Alamofire/Alamofire/search?utf8=%E2%9C%93&q=responseObject

那么问题是 AnyClass 不符合 ResponseObjectSerializable,您可以扩展 AnyClass 以包含 ResponseObjectSerializable 所需的方法,或者您可以让您的方法参数采用 ResponseObjectSerializable 而不是 anyClass

【讨论】:

好的,我明白了。我错过了对 ResponseObjectSerializable 部分的确认。谢谢。

以上是关于将类类型传递给泛型的主要内容,如果未能解决你的问题,请参考以下文章

Swift:将类型从属性传递给泛型函数

为啥类型不能分配给泛型类型

使用类型泛型时如何正确地将类转换为抽象类?

Dagger 和 Kotlin - 将类绑定到其泛型超类型的问题

如何将类类型作为函数参数传递

将类类型作为参数传递并针对 Kotlin 中的另一个对象检查类型