2017-11-22 8 views
0

json APIから対応する関数を作成しようとしましたが、この関数はalamofireリクエストよりも速く値を返します...誰かが私を助けてくれましたか?どうもありがとうございました。コードは以下のとおりです。JSON APIからスウィフトリクエストデータ

func trainNameToTelecode(trainName: String) -> String { 
    var returnTelecode: String = "" 
    Alamofire.request("http://tra.ink/api/query/train?name=\(trainName)").responseJSON { (response) in 
     let result = response.result 
     guard let resultDict = result.value as? Dictionary<String,AnyObject> else {return} 
     guard let bodyDict = resultDict["body"] as? [String:AnyObject] else {return} 
     returnTelecode = bodyDict["telecode"] as! String 
    } 
    return returnTelecode 
} 

答えて

1

次の例のように、あなたの要求が完了したときにあなたの文字列を返します完了ハンドラを使用することができます。

func trainNameToTelecode(trainName: String, completion: (String) -> Void) { 
    Alamofire.request("http://tra.ink/api/query/train?name=\(trainName)").responseJSON { (response) in 
     let result = response.result 
     guard let resultDict = result.value as? Dictionary<String,AnyObject> else {return} 
     guard let bodyDict = resultDict["body"] as? [String:AnyObject] else {return} 

     if let returnTelecode = bodyDict["telecode"] as? String { 
      completion(returnTelecode) 
     } else { 
      completion("telecode is nil") 
     } 
    } 
} 

//and where you call your function: 
self.trainNameToTelecode(trainName: "yourName") { (telecode) in 
    print(telecode) 
} 
+0

はそんなにuの感謝します –

関連する問題