如何从两个不同的api模拟中获取数据?迅速

时间:2017-07-31 04:37:17

标签: json swift api uitableview

我想知道,根据我去过的求职面试,如何获取2个不同的API调用 - 让我们说电影名称和国际语言支持API 如何将其中的2个一起下载到一个表视图中?

提前谢谢你会帮助我很多

2 个答案:

答案 0 :(得分:2)

很简单您必须创建请求链,并在获得两个结果后重新加载tableview

您已从两个服务重新创建

创建字典数组

例如说首先只返回arrayForMovieName:[“a”,“b”,“c”]

和Second将返回arrayForLanguage:[“Hindi”,“English”,“etc”]

现在将这两个数组合并到你创建的第三个字典数组中,如

arrForMovieWithLanguage = [[movie:"a","language":["Hindi","English"]],[movie:"b","language":["English"]]]
  

解决方案:1对两个服务都采用布尔值,如

var isLanguageGet:Bool = false
var isMovieGet:Bool = false
wsGetMovie()
{
  isMovieGet = true
  if isLanguageGet
  { self.tableView.reloadData() 
  }
}
wsGetLanguage()
{
  isLanguageGet = true
  if isMovieGet
  { self.tableView.reloadData() 
  }
}
  

解决方案:2进行网络服务呼叫同步

wsGetMovie()
{
 wsGetLanguage()
}
wsGetLanguage()
{
self.tableView.reloadData() 
}

答案 1 :(得分:0)

您可以使用闭包异步等待另一个API响应。我只是给你一个实施的想法。之后,您可以根据您的要求实施。

根据我的要求,首次服务需要欧元价格。之后,另一个API需要欧元价格,并将返回付款数据。所以,我实现了如下情况。

func getPaymentDetail(euroPrice: Double, completion: @escaping (Result<JSON>) -> Void) {
    // Call second API and return result in completion closure.
  if response.result.isSuccess {
     completion(response.result)
  }
 // For failure handle here.
}

func getPriceOfEuro(rate: @escaping (Double) -> Void) {
    // Here I get Euro price.
}

然后按顺序将它们绑定在下面。

getPriceOfEuro(rate: { (price) in
   self.getPaymentDetail(euroPrice: price, completion: { (result) in    
          // Take data from result and reload Table.
     })
})