2016-05-06 3 views
0

Я протокол определяется какSwift закрывающие общие параметры

func get<T: ApiModel, TError: ApiModel>(url: String, params : [String : AnyObject]?, headers : [String : String]?, success:(T)->Void, error:(TError?, NSError)->Void) -> Void; 

Попытка назвать его как

self.webClient.get("http://google.com", params: nil, headers:  headers, success: { (response: ConcreteClass) in 

     }, error: { (errorModel:ConcreteErrorClass, error: NSError) in 

    }) 

Это приводит к следующей ошибке:

'Cannot convert value of type (ConcreteClass) ->()' to expected argument type '(_) -> Void' 
+0

Первый параметр закрытия ошибки должен быть необязательным в соответствии с объявлением ('TError?'). – werediver

+0

Раздражающе это не подчеркивало закрытие отказа как проблему. Добавьте свой комментарий в качестве ответа, и я приму его. – JamieB

ответ

1

В декларации метод, который вы вызываете, замыкание error: имеет первый параметр дополнительного типа (error:(TError?, NSError)->Void), bu т вы объявили его с необязательным типом. Это может быть причиной (действительно, Swift иногда создает довольно несвязанные сообщения об ошибках).

Смежные вопросы