2016-09-18 18 views
0

私のアプリは、tableViewセルに画像を表示します。達成したいのは、セルが画面から消えても画像を順番に読み込むことです。たとえば、セル1〜100があり、セルが表示され、ユーザーが既にセル78にスクロールしていても、イメージは1から100のバックグラウンドでダウンロードされます。また、私はネットワークを騒ぎませんので、時間。これらの基準を念頭に置いて、私はどのような設定が最も適切だろうと思っていましたか?画像を表示してテーブルセルに表示する(同時)

現時点では、私はAlamoFireを使用して画像をダウンロードしています。 AlamofireとNSOperationQueueの何らかの組み合わせが適しているでしょうか。私はこの段階でNSOperationQueueに精通していません。だから私は、私はNSOperationQueue

の設定に深く行くを開始する前に、私はお勧め業界の慣行を見つけようと思った私はまた、アプリがバックグラウンド

注にある場合でも、ダウンロードを続行するための機能を組み合わせたいのですが。任意の代替ライブラリまたはフレームワークのソリューションも歓迎です

+1

提案では 'SDWebImage' libを使用してください。これはあなたの' tableViewCell'にぴったりです。 –

答えて

0

そこの最善の解決策はSDWebImageです。このリポジトリへのリンクはhereです。 依存関係を持たずに独自のやり方をしたいのであれば、SDWebImageと同じことに従わなければなりません。要するに

  • は非同期並行URLから画像をダウンロードする、スレッドでダウンロードを開始します。
  • ダウンロード後、NSCacheを使用して画像を保存し、 imageURLをキーとして使用します。
  • NSCacheに画像を保存した後、NSCacheDirectoryに画像を書き込みます。画像はURLと同じです。

イメージが存在するかどうかを確認する必要があります。イメージURLがNSCacheであるかどうかを確認するには、imageURLをキーとして簡単に検索できます。見つかった場合は、画像を返すか、画像が存在するかどうかにかかわらずNSCacheDirectoryを検索してください。そうでない場合は、イメージをダウンロードして、もう一度手順を実行する必要があります。

今すぐNSCacheはRAMのようです。そこに保存されているデータは、アプリケーションがアクティブである限りそこに残ります。終了すると、NSCacheのデータが消去されます。 したがって、このファイルはNSCacheDirectoryにも書き込まれます。ここでのデータは、アプリがデバイスから削除されない限り永続的です。

このことがどのように機能するかを理解できるようにしたいと思います。 乾杯。