2016-07-27 9 views
1

zurück, also habe ich eine Funktion, die ein JSON-Objekt zurückgeben muss, das von einem API-Endpunkt empfangen wird. Aus irgendeinem Grund gibt diese Funktion immer nil zurück, obwohl beim Ausdrucken von response.result.value die API-Antwort perfekt enthalten ist und die if-Anweisung für returnJSON eingegeben wird. Würde mich über jede Eingabe freuen!Swift: Geben Sie JSON von der Funktion

+3

Warum Sie die JSON in Wörterbuch und das Rück Wörterbuch nicht analysieren? Außerdem geben Sie 'returnJSON' zurück, bevor die Ergebnisse von Ihrer POST-Anforderung erhalten werden, daher ist es null. Verwenden Sie Blöcke. – NSNoob

+0

Erfahren Sie, wie Sie [Swift Closures mit Alamofire für Netzwerk-Anfragen] verwenden können (http://stackoverflow.com/questions/25141829/swift-closure-with-alamofire) – NSNoob

Antwort

2

Alamofire verwenden asynchrone Aufrufe, weil Internet holt immer einige Male benötigt. Abschlussblock Alamofire.request wird immer aufgerufen nachstoreContact Rückgabewert. Seine gemeinsame Verschlüsse in dieser Situation zu verwenden:

func storeContact(name: String, number: String, apiToken: String, completeonClosure: (AnyObject?) ->()) { 
    let contact = ["api_token" : apiToken, "name" : name, "number": number] 

    Alamofire.request(.POST, "http://sample.app/api/v1/contact", parameters: contact, encoding: .JSON).responseJSON { 
     response in 
     completeonClosure(response.result.value) 
    } 
} 

Verbrauch:

storeContact("name", number: "number", apiToken: "apiToken") { 
    returnJSON in 
    print(returnJSON) 
} 
+1

Legende, das funktioniert ein Leckerbissen dank! – frostfat

Verwandte Themen