0

このトピックには多くのテーマがありますが、次の状況では非常にイライラしているようです:(

アプリは、約 1000 個のオブジェクトを含む JSON をダウンロードして解析します。これらのオブジェクトの属性には、小さな画像へのリンクがあります。これらの画像を(1回)ダウンロードして保存し、TableViewでアイコンとして使用する必要があります。

そのような量のファイルを保存し、TableView を表示しながらそれらを効率的に操作するための最良の方法は何ですか?

4

2 に答える 2

1

その方法を説明しますが、その前に、インターネットからファイルをダウンロードしてアプリに保存することについて警告したいと思います。

最近、 App Store Review Guidelinesのルール 2.23 に違反したため、自分のアプリの 1 つが Apple から拒否されました。

2.23 アプリはiOS データ ストレージ ガイドラインに従う必要があります。従わない 場合は拒否されます

Apple は最近 iCloud を使用しているため、各アプリがアップロードするトラフィックを最小限に抑える必要があるため、アプリのドキュメント フォルダーに 40MB を超えて保存しないようにする必要があります。彼らはまた言います(私が提供したリンクを読んだ場合):

再ダウンロードまたは再生成できるデータは、/Library/Caches ディレクトリに保存する必要があります。

また、キャッシュ フォルダーは必要に応じて iOS によって削除される可能性があるため、画像がなくなった場合に備えて、画像を再度ダウンロードできるようにアプリを設計する必要があります。この点に注意してください。

私の解決策として、1000 個のファイルをダウンロードするのは多すぎると思います (ファイルが小さい場合でも)。ダウンロード元のサーバーにファイルを ZIP ファイルで保存し、ダウンロードしたらディスクに解凍することをお勧めします。これははるかに簡単で実用的です。アプリで圧縮および解凍する方法については、こちらを参照してください。

ファイルを解凍したら、小さなデータベース (SQLite) を用意して、そこからファイル名をロードし、これらの名前を配列に格納してから、この配列を使用して関数内のテーブルに画像を入力することをお勧めしますcellForRowAtIndexPath

これがお役に立てば幸いです。ちなみに、それは私のやり方ですが、あなたが求めているように「最善の方法」だと言っているわけではありません:)

于 2012-09-28T17:48:26.290 に答える
0

これらのイメージ/データを永続的に維持したい場合、2 つのオプションがあります。それらを自分で管理するか、Core Data を利用してそれを行うことができます。コアデータをお勧めします。

Core Data に慣れていない場合は、ここで読み始めることができます。始めるのは少し大変ですが、一度チュートリアルを実行すると、非常に簡単になり、人生がずっと楽になります。

画像を自分で保存したい場合、またはより効率的な Core Data 構造が必要な場合は、すべての画像を Documents ディレクトリに書き込むことをお勧めします。次に、ファイル パス文字列を CD 構造に格納するか、手動でThisのように plist に格納できます。

最後に、それらを TableView にロードするために、これらの保存された画像パスを使用して UIImages をロードできます。

[[UIImage alloc] initWithContentsOfFile:filePath];

これはあなたの中に置かれます:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

機能を使用して、好きな場所に画像を設定できます。

于 2012-09-28T17:51:10.483 に答える