2015-10-28 4 views
11

ich Xcode aktualisiert 7 und ich Alamofire bin mit API-Aufrufe zu verwalten und ich erhalte diese Störung:Kontexttyp für die Liste Schließung Argument erwartet 1 Argument, aber 4 wurden angegeben

‚Kontexttyp für die Liste Schließung Argument erwartet 1 Argument wurden jedoch 4 angegeben‘

Für den folgenden Code:

static func loginWithEmail(email: String, password: String, response: (token: String?) ->()) { 
    let urlString = baseURL + ResourcePath.login.description 
    let parameters = [ 
     "email": email, 
     "password": password 
    ] 
    Alamofire.request(.POST, urlString, parameters: parameters).responseJSON { (_, _, data, _) -> Void in 
     let json = JSON(data!) 
     let token = json["token"].string 
     response(token: token) 
    } 
} 

der Fehler auf der folgenden Zeile bezieht:

Alamofire.request(.POST, urlString, parameters: parameters).responseJSON { (_, _, data, _) -> Void in 

Ich bin neu zu schnellen Schließungen und weiß nicht, ob ich die Werte verschachteln muss, damit es gültig ist.

Hilfe wird sehr geschätzt.

+1

Hatten Sie einen Blick auf die [Alamofire 3.0 Migration Guide] (https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%203.0%20Migration% 20Guide.md), insbesondere der Abschnitt "Breaking API Changes"? –

Antwort

9

Die Schließung nimmt einen einzelnen Parameter des Typs Antwort < AnyObject, NSError> so sollte Ihr Code mehr wie folgt aussehen.

Alamofire.request(.POST, urlString, parameters: parameters).responseJSON { response in 
    let json = JSON(response.data!) 
    let token = json["token"].string 
    response(token: token) 
} 
+0

Vielen Dank Chris Gulley, das hat mein Problem gelöst. –

+0

Was ist mit Abschluss-Handler? – user805981

2

Danke für die Hilfe, das war meine erste Frage hier und es war hilfreich und ermutigend. Schluss Code sieht wie folgt aus:

static func loginWithEmail(email: String, password: String, func_response: (token: String?) ->()) { 
    let urlString = baseURL + ResourcePath.login.description 
    let parameters = [ 
     "email": email, 
     "password": password 
    ] 
    Alamofire.request(.POST, urlString, parameters: parameters).responseJSON { response in 
     if response.result.isSuccess { 
      let json = JSON(response.result.value!) 
      let token = json["token"].string 
      func_response(token: token) 
     } 
    } 
Verwandte Themen