Griff JSON-Antwort mit Alamofire in Swift

sorry für mein schlechtes Englisch 🙂

Ich habe ein problem Parsen der JSON-Antwort über Alamofire in Swift für eine iOS-app. Ich schrieb eine Funktion, um einen string zurückzugeben, der JSON-Antwort. Die request-und response-handling, die ich mit Alamofire und die JSON-Handhabung, die ich mit SwiftyJSON. Zu Beginn erkläre ich einer var namens jsonString mit dem Wert test. Dann mache ich eine Anfrage an einen REST-Service und erhalten Sie ein JSON-Antwort durch klicken auf eine Schaltfläche. Diese Antwort möchte ich zu dem zurückkehren mit der Funktion ping(url:String). Am Ende Drucke ich die zurückgegebene Antwort als test. Aber auf den ersten Klick auf den button der return-Wert von ping ist test und nicht die JSON-Zeichenfolge der Antwort. Auf die zweite klicken Sie auf die Schaltfläche, erhalte ich den richtigen Wert zurück. Warum habe ich dieses problem. Ist die Alamofire Anforderung eine asynchrone operation? Ich möchte die Antwort zu warten. Wie kann ich das problem lösen, um den richtigen Wert auf den ersten klicken und nicht test als Wert?

Hier ist mein code:

var jsonString:String = "test"

func ping(url:String) -> String {

    Alamofire.request(.GET, url)
        .response {
            (request, response, data, error) -> Void in

            let json = JSONValue(data as? NSData)
            self.jsonString = json.rawJSONString
    }

    return self.jsonString
}

@IBAction func checkOnlineStatus(sender: UIButton) {

    let response:String = ping("http://test.com")

    println(response)}

InformationsquelleAutor Martin | 2014-09-21

Schreibe einen Kommentar