2

私は、次の手順でシナリオを実行する必要があります。この完全なシナリオで操作キューを使用する必要がありますか?

  1. そのJSONレスポンスを解析し、モデルエンティティ
  2. を作成するために、そして、ユーザー
  3. が提供するいくつかの検索パラメータを使用してネットワーク呼び出しを行うにはその後作成されたエンティティごとに、関連付けられたイメージURLがある場合は、そのようなイメージをダウンロードするための対応するサービスを呼び出して、ダウンロードが完了したらUICollectionViewに表示することができます。

私が必要とするN個の画像をダウンロードするときに、同時にネットワークコールを処理する必要があります。ユーザーは、現在の検索フローをキャンセルして新しい検索フローを開始する可能性があります。また、特定のイメージのセルがまだ表示されていないか、またはデキューされていることを考慮する必要があります。だから、私の質問です:これは最高のアプローチですか?

  • は、第1のネットワーク・コール(NO並行性)と直接URLSessionURLSessionDownloadTaskを使用して、それ以降の処理のためにOperationOperationQueueを用いて解析JSON応答を実行します。ユーザーが現在の検索をキャンセルしたい場合は、URLSessionの場合はinvalidateAndCancel()を、の場合はcancelAllOperations()の両方を使用してください。
  • OperationOperationQueueを使用して完全な処理を実行します。
  • 他の適切な方法はありますか?
+0

..細胞内の画像の非同期を表示するSDWebImageのようなものを使用NSOperationQueue(この場合の主な利点は私が考えることができるのは依存性と優先度です)を使用してそれらの間で優先順位を付けても、私は信じられない価値があります。 NSURLSessionの複数のデータタスクを開始することができ、後でURLSessionでinvalidateAndCancelを呼び出すことは理にかなっています。しかし、画像をダウンロードしてCollectionViewで表示するには、SDWebImageを使用することをお勧めします。それは広範囲にキャッシュし、画像をダウンロードし、独自のUIを更新します。collectionView/tableViewの画像を効率的に表示します。D –

答えて

0

最善の方法は、同期サービスコールまたは非同期サービスコールのいずれかを実行して最初のサービスコールを行うことです。完了したら、jsonを同期して解析し、画像を表示するために画像をダウンロードする場合は、遅延読み込みコンセプト(非同期呼び出し)を使用して読み込みます。

+0

同期ネットワークコール!!! HUMM thats興味深い、NSURLSessionのAPIは同期呼び出しをする???私の知る限り、ネットワークコール用の同期APIはありません –

+0

NSURLSessionではありません。 NSURLSessionまたはURLSessionは、完全に非同期のサービス呼び出しです。あなたは古いですNSURLConnectionを使用することができます。私はあなたにそうする必要はないと思うが。 – NKB

+0

申し訳ありません、私の質問のタイトルはちょっと混乱していました...実際に私の質問は、URLSessionまたは(async) '操作' – AppsDev

0

ネットワークコールを実行し、モデルオブジェクトを作成します。これらのAPIをAPI補完ブロックを介してVCに返します。

その後、あなたのコレクションビューをリロードし、各セルにURLを渡し、それ自体については、各セルの心配を持って、彼らは何の依存関係を持っていないため、後続のネットワーク呼び出しのために

関連する問題