2015-09-22 15 views
6

Diese Zeile war immer gut für mich, um Alamofire-Anfragen zu erstellen und die JSON-Antwort zu erhalten.Alamofire + SwiftyJSON Kompilierfehler nach der Konvertierung in Xcode 7

Alamofire.request(req).responseJSON() { 
     (request, response, data, error) in 

    // .... 

} 

Nach 2,0 bis XCode 7 und Umwandeln des Projektes zu Swift aktualisieren, alle Codezeilen, die meine Alamofire Anfrage haben, werden diese Fehler nicht angezeigt wird:

'(_, _, _, _) -> Void' is not convertible to 'Response<AnyObject, NSError> -> Void' 
+0

Ich bin verwirrt, aber der Alamofire Doc sagt, dass es so heißt. Selbst wenn ich es auf 2 Params heruntergefahren habe, immer noch den gleichen Fehler, außer dass es (_, _) anstelle von (_, _, _, _) – Lavvo

+0

eine Antwort unten hinzugefügt, musste ein AF-Projekt in Xcode7 zu öffnen Sieh, hoffe es funktioniert! –

Antwort

14

die Antwort in diesen link gefunden, aber es ist auf japanisch. Es scheint dies die von nun korrekt ist (aus Antwort im Link):

Alamofire.request(.GET, requestUrl).responseJSON { 
    response in 
    if response.result.isSuccess { 
     let jsonDic = response.result.value as! NSDictionary 
     let responseData = jsonDic["responseData"] as! NSDictionary 
     self.newsDataArray = responseData["results"] as! NSArray 
     self.table.reloadData() 
    }    
} 
+0

Ich versuche das gerade jetzt. Bis jetzt, das entfernt meine Kompilierungsfehler. Ich muss dies noch ein paar Mal in verschiedenen Bereichen tun, bevor ich meine App zum Testen erstellen kann, dann werde ich Ihnen die Ergebnisse mitteilen. – Lavvo

+0

Sie haben mich gerettet, das scheint die richtige Antwort zu sein. Kurz gesagt, das funktioniert jetzt für mich. Auf der Grundlage dieses neuen Formulars müssen noch einige Optimierungen vorgenommen werden, aber ich kann sehen, dass meine Protokollanweisungen Ergebnisse ziehen. – Lavvo

+0

Es scheint, dass dieses Problem nicht auftritt, wenn Sie Alamofire mit Cocoapods installieren. –

0

ich ein Projekt mit AF nach oben gezogen und hier geht:

Alamofire.request(.POST, someRequest).responseJSON { (request, response, result) -> Void in 


    } 

Sieht aus wie es nur 3 Parameter für die ist Schließung, Anfrage, Antwort & das Ergebnisobjekt. Ich könnte mir vorstellen, dass dies daran liegt, dass Swift 2.0 etwas mit sich bringt.

0

Mit Alamofire-SwiftyJSON der Fehlerbehandlung ist das gleiche:

.responseSwiftyJSON({ (request, response, json, error) -> Void in 
    if let error = error { 
     print("Received error \(error)") 
     return 
    } 
    else { 
     print("Received json response \(json)") 
    } 
} 

aber jetzt error ist ein ErrorType statt ein NSError.

Mit Ebene Alamofire und iOS JSON, die Reaktion und Fehler in Folge des Typs Result<AnyObject> vereint sind, haben Sie das Ergebnis auszupacken:

.responseJSON { request, response, result in 
    switch result { 
    case .Success(let value): 
     print("Received response \(value)") 
    case .Failure(_, let error): 
     print("Received error \(error)") 
    } 
2

Alte Syntax:

Alamofire.request(req).responseJSON() { 
    (request, response, data, error) in 
    // .... 
} 

Neue Syntax :

Alamofire.request(req).responseJSON() { 
    response in 
    if response.result.isSuccess { 
    let data = response.result.value 
    // .... 
    } 
} 
Verwandte Themen