Вызов синхронно с alamofire Swift 3 - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть массив со списком строк, и я должен вызвать API для его перевода. в моем текущем случае ответ API приходит после завершения цикла for, мне нужно вызывать API один за другим. Я имею в виду, что мне нужно дождаться ответа, чтобы отправить другую строку. Вот мой код

var stringList = ["cat","dog","cup","glass","land"]

for k in 0..< stringList.count {
     self.SetTranslateLetters(WORD: stringList[k], LANG: "AR", completionHandler: { (true) in

    })
}

func SetTranslateLetters(WORD: String, LANG:String, completionHandler:@escaping (Bool) -> ()){

    let param: [String:AnyObject] = [
        "word": WORD as AnyObject,
        "language":LANG as AnyObject
    ]
    let queue = DispatchQueue(label: "com.cnoon.manager-response-queue",
                              qos: .userInitiated,
                              attributes:.concurrent)
    Alamofire.request(url, method: .post,
        parameters: param,
        encoding: JSONEncoding.default,
        headers: ["Content-Type":"application/json; charset=UTF-8"]).responseJSON(queue: queue, options: .allowFragments,
                 completionHandler: { (response:DataResponse<Any>) in

                    switch(response.result) {
                    case .success(let value):
                        print("done")
                        let json_ = JSON(value)
                        // print(json_)


                        let getCoun = json_["TranslateResult"]
                        // print(getCoun)


                        break
                    case .failure(_):
                        print(response.result.error!)
                        if response.result.error?._code == NSURLErrorTimedOut{
                            //TODO: Show Alert view on netwok connection.
                            completionHandler(true)

                        }
                        break
                    }
    })

}
...