私は就職インタビューによると、2つの異なるAPI呼び出しを取得する方法を知りたいです - 映画名と国際化サポートAPI 2つを一緒に1つのテーブルビューにダウンロードする方法を教えてください。2つの異なるAPIシミュレーションからデータを取得する方法は? swift
が、それは多くの
私は就職インタビューによると、2つの異なるAPI呼び出しを取得する方法を知りたいです - 映画名と国際化サポートAPI 2つを一緒に1つのテーブルビューにダウンロードする方法を教えてください。2つの異なるAPIシミュレーションからデータを取得する方法は? swift
が、それは多くの
私を助ける、事前にあなたに感謝あなたが要求チェーンを作成する必要があり、両方の結果を得た後、あなたが両方のサービスresposnseから辞書の配列を作成する必要がありテーブルビュー
をリロードシンプルです
例えばは最初だけarrayForMovieNameを返します言う:[ "A"、 "B"、 "C"]
及び第二だけでarrayForLanguageを返します:[ "ヒンディー語"、 "英語"、 "など"]
メイクのWebサービス:var isLanguageGet:Bool = false
var isMovieGet:Bool = false
wsGetMovie()
{
isMovieGet = true
if isLanguageGet
{ self.tableView.reloadData()
}
}
wsGetLanguage()
{
isLanguageGet = true
if isMovieGet
{ self.tableView.reloadData()
}
}
ソリューションのように、両方のサービスの1テイクブール:
は今
arrForMovieWithLanguage = [[movie:"a","language":["Hindi","English"]],[movie:"b","language":["English"]]]
ソリューションのような辞書のあなたの作成した3番目の配列には、この2つの配列をマージコールシンク
wsGetMovie() { wsGetLanguage() } wsGetLanguage() { self.tableView.reloadData() }
これを行うには、同期呼び出しが最適な方法です。最初のAPI呼び出しを行い、成功した場合はSol2に示すように2番目のAPI呼び出しを行います。これらのAPIのいずれかが失敗した場合は、エラーのアラートを送信するだけです。 – Rishabh
リプレイのおかげで –
クロージャを使用して、別の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.
})
})
以下の回答があります。 –
下記の回答を確認してください。 – Jaydeep