2016-05-06 11 views
0

Ich habe ein Protokoll alsSwift Verschluss generische Parameter

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

Den Versuch, es zu nennen als

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

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

    }) 

Diese in den folgenden Fehlern führen:

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

Der erste Parameter der Fehlerverhinderung muss gemäß der Deklaration optional sein ('TError?'). – werediver

+0

Ärgerlich hat es die Misserfolgschließung als das Problem nicht hervorgehoben. Fügen Sie Ihren Kommentar als Antwort hinzu und ich werde es akzeptieren. – JamieB

Antwort

1

In der Erklärung von die Methode, die Sie aufrufen, die error: Schließung hat den ersten Parameter des optionalen Typs (error:(TError?, NSError)->Void), BU t Sie haben es mit einem nicht-optionalen Typ deklariert. Das mag der Grund sein (tatsächlich produziert Swift manchmal ziemlich unzusammenhängende Fehlermeldungen).

Verwandte Themen