Swift泛型:"无法推断通用参数T"

时间:2016-07-18 20:13:26

标签: swift generics moya

我试图基于Moya和Object Mapper创建一个通用请求处理程序类。 基本上我想要一个对Moya Target执行请求并对成功和失败情况执行一些基本处理的方法:

我的课程基于this answer

class APIRequestHandler<T: Mappable> {
  let provider = APIManager().getAPIProvider() // Moya provider

  func performRequest(target: Target, completionHandler: (response: T?, error: StoreError?) -> Void) {
    provider.request(target) { result in
      switch result {
      case let .Success(response):
        switch response.statusCode {
        case 200..<300:
          do {
            let json = try NSJSONSerialization.JSONObjectWithData(response.data, options: .MutableContainers)
            let contractualDocument = Mapper<T>().map(json)
            completionHandler(response: contractualDocument!, error: nil)
          } catch _ {
            // Unexpected error when the response can't be parsed
            completionHandler(response: nil, error: StoreError.UnexpectedError)
          }
        case 500:
          completionHandler(response: nil, error: StoreError.ServerError)
        default:
          completionHandler(response: nil, error: StoreError.HTTPError(statusCode: response.statusCode))
        }
      case .Failure(_):
        completionHandler(response: nil, error: StoreError.NetworkError)
      }
    }
  } 
}

我的问题是,如果我可以在函数级别使用泛型而不是类级别获得相同的结果:

  func performRequest<T: Mappable>(target: Target, completionHandler: (response: T?, error: StoreError?) -> Void) {
    provider.request(target) { result in
      switch result {
      case let .Success(response):
          // blah, blah
      case .Failure(_):
          // bleh, bleh
      }
    }
  } 

我已经尝试过,我的代码出现了构建错误:

Generic parameter "T" could not be inferred

0 个答案:

没有答案