【问题标题】:Cannot invoke Method with an argument list of type in swift无法在 swift 中调用具有类型参数列表的方法
【发布时间】:2016-04-28 06:05:35
【问题描述】:

我有一个功能

func mapResponse<T:Mappable>(responseObject:Alamofire.Request, 
                   forRequest requestObject:RequestObject,
                              responseType:T,
                                completion:(AnyObject?,String?) -> Void) 
{
    responseObject.responseObject{(response: Response<T, NSError>) in
        if let error = response.result.error {
                       completion(nil,error.description)
                       return
                }
                else {
                    let value:T = response.result.value!
                    self.saveObject(value, forRequest: requestObject,completion: completion)
                }
            }
}

当我这样称呼它时

let model:Mappable = requestObject.responseModel
ResponseMapper.sharedInstance.mapResponse(request, 
                                           forRequest:requestObject,
                                         responseType:model,
                                           completion:completion)

在哪里

struct RequestObject { 
    let requestName:RequestName 
    let parametersStructure:Array<ParameterKey>? 
    let inputParameters:Dictionary<Parameter,AnyObject>? 
    let requestType:RequestType 
    let requestUrl:String 
    let cachLevel:CachLevel 
    let responseModel:Mappable 
    let parameterEncoding:ParameterEncoding
}

它给我错误:

“不能使用参数列表调用‘方法’”

虽然它工作正常,如下所示

ResponseMapper.sharedInstance.mapResponse(request, 
                                        forRequest:requestObject,       
                                      responseType:CarModel(), 
                                        completion:completion)

在哪里

Class CarModel: Mappable

第一次通话的问题在哪里

【问题讨论】:

  • 你能显示 requestObject 的类吗?

标签: ios swift generics


【解决方案1】:

requestObject.responseModel 应该符合Mappable

 struct RequestObject<T where T:Mappable> {
    let responseModel:T
 }

【讨论】:

  • 它被定义为 Mappable struct RequestObject { let requestName:RequestName let parametersStructure:Array?让 inputParameters:Dictionary?让 requestType:RequestType 让 requestUrl:String 让 cachLevel:CachLevel 让 responseModel:Mappable 让 parameterEncoding:ParameterEncoding}
猜你喜欢
  • 2015-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
相关资源
最近更新 更多