0

我想将位置地址的 googleMap Api 结果翻译成波斯语。我正在使用 YandexApi 翻译地址。用“،”分隔地址组件,并将此数组传递给 for api。我的问题是每次服务调用后我的用户界面都更新了。如何解决这个问题。例如,当我将此数组传递给方法时:["road","avenue"] 地址标签文本在每次翻译响应后更新 label = "جاده" 的第一个文本 label = "جاده ، خیابان" 的最后一个文本有我的代码:

func translateText(text:[String],closure:@escaping ((_ success:String?,_ error:Error?) -> Void)) {

    var translateString: String = ""
    var responseError: Error?
    for item in text {
      myGroup.enter()
    let urlString = "https://translate.yandex.net/api/v1.5/tr.json/translate?key=trnsl.1.1.20171105T134956Z.795c7a0141d3061b.dc25bae76fa5740b2cdecb02396644dea58edd24&text=\(item)&lang=fa&format=plain&options=1"
    if let allowString = Utilities.shareInstance.getQueryAllowedString(url: urlString) {
      if let url = URL(string:allowString){
        Alamofire.request(url).responseJSON { response in
          guard let responseData = response.data else {
            return
          }
          do {
            let json = try JSONSerialization.jsonObject(with: responseData, options: [])
            if let res = json as? [String:Any] {
              if let code = res["code"] as? Int {
                if code == 200 {
                  if let textArr = res["text"] as? [AnyObject] {
                    let flattArr = Utilities.shareInstance.flatStringMapArray(textArr)
                    if flattArr.count > 0 {
                      translateString += " ، " + flattArr[0]
                    }
                  }
                }
              }
            }
          }catch {
            responseError = error
          }
          self.myGroup.leave()
          closure(translateString, responseError)
        }
      }
    }
   }
  } 

 private func translatingAddressArrayForChecking(address:[String])  {

    var addressString = ""
    let addressComponent = address
    if addressComponent.count > 0 {
      YandexTranslateAPI.shateInstance.translateText(text: addressComponent, closure:{ success,_ in
        if let res = success {
          addressString = res
          OperationQueue.main.addOperation {
            self.layoutActivity(start: false)
            if self.searchState == .Origin && self.destinationButton.isHidden == false{

              if let selectOrigin = self.originSelectedCity {
                if let city = selectOrigin.city_title {
                  if addressString.contains(city) {
                    self.originAddressLabel.text = addressString
                    if let location = self.startCoordinate {
                    self.setOrigin(location: location)

                    }
                  }else {
                    self.CreateCustomTopField(text: "wrong city", color: Constants.ERROR_COLOR)
                  }
                }
              }

            }else if self.searchState == .Destination || self.destinationButton.isHidden == true  {
              if let selectOrigin = self.destinationSelectedCity {
                if let city = selectOrigin.city_title {
                  if addressString.contains(city) {
                    self.destinationAddressLabel.text = addressString
                    if let location = self.endCoordinate {
                      self.setDestination(location: location)
                    }
                  }else {
                    self.CreateCustomTopField(text: "wrong city", color: Constants.ERROR_COLOR)
                  }
                }
              }
            }
          }
        }
      })

    }

地址标签文本使用数组组件更新多个。

4

0 回答 0