【问题标题】:Pass in class type to be used with Object Mapper传入要与 Object Mapper 一起使用的类类型
【发布时间】:2016-08-17 16:49:59
【问题描述】:

我正在使用对象映射器进行 swift 并且遇到了问题。

我有一个 API 类,它调用服务器并以 json 响应进行响应。

现在,当我在此 API 类中调用 dataTask 函数时,我想通过我希望使用对象映射器将 json 响应映射到的类类型。

func dataTask(method: String, type: AnyClass) {

    Mapper<AnyClass>().map(response)

}

我不确定如何传入要与映射器一起使用的类,我尝试过泛型但不确定我是否正确实现了它。

func dataTask<T>(method: String, type: T.type) {
}

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 别写-&gt; Void

标签: ios swift generics objectmapper


【解决方案1】:

您需要一个对任何Mappable 类型都通用的函数。本质上,这将为您使用的每种T 类型生成一个dataTask(method:_:) 版本,这将调用适当版本的Mapper()

func dataTask<T: Mappable>(method: String, _: T.Type) {
    Mapper<T>().map(response)
}

注意第二个参数,为了使其成为泛型类型,需要添加“.Type”。

【讨论】:

  • 我确实尝试过,但出现错误说明。类型“T”不符合 Mappable 协议
  • @JackOfDiamonds 然后在T 上添加一个通用约束。我已经更新了我的答案。
  • 我建议您扩展您的答案,包括对您的代码如何解决问题的说明。
  • @brandonscript 我想我做不到。我会听从语言指南的,谁可以比我更好地解释这些东西。
  • 嗯好吧。做你能做的。有人将其标记为内容,并且在没有上下文的情况下,尚不完全清楚这将如何解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 2014-02-03
  • 1970-01-01
相关资源
最近更新 更多