0

UITableViewユーザーがタグ付け/ブックマークできるコンテンツが入力されているがあります。コンテンツがブックマークされると、アプリはブックマーク情報をサーバー側のデータベースに正常に送信します。コンテンツがすでにユーザーによってブックマークされている場合、それぞれのセルにブックマークされた画像を表示する最も効率的な方法を見つけようとしています。

たとえば、ユーザーがセルのブックマークをタップすると、ブックマーク画像に別の画像が表示され、ブックマークを確認できます。ブックマーク情報がデータベースに送信されます。これはすでに機能します

ここで私は助けが必要です...

ユーザーがアプリを再度開くUITableViewと、データが再入力されます。セルにブックマークされたコンテンツが含まれている場合は、ブックマークされた画像をセルに表示する必要があります。現在、ViewDidLoadユーザーのブックマークを取得するデータベースクエリがあります。私が考えることができる唯一の実装は、のクエリデータを検索することcellForRowAtIndexPathです。ただし、これがスクロールパフォーマンスに影響することはわかっています。これを行うためのより良い方法はありますか?

4

1 に答える 1

0

数百万のブックマークがない場合は、それぞれのブックマークフラグをチェックしてもcellForRowAtIndexPath、パフォーマンスに大きな影響はありません。

私の経験では、テーブルビューのスクロールは非常に効率的であり、他のことを行うためのプロセッサ時間はまだ十分にあります。インデックスの値を簡単にチェックしても、それほど影響はありません。おそらくそれにアプローチする最良の方法は、クエリ結果を解析し、それぞれのインデックスにYES / NOフラグのみを持つ専用のNSArrayを作成することです。これをチェックしcellForRowAtIndexPathて、ブックマークされたインジケーターを表示するかどうかを決定できます。

本当にできるだけ高速にする必要がある場合は、viewDidLoad 特定の各インデックスで0/1の値を持つC配列を作成し、それにアクセスすることができますarray[index]。これにより、NSArrayに存在する可能性のある追加のオーバーヘッドがすべて削除されます。しかし、繰り返しになりますが、私の経験では、これらの種類の用途では、オーバーヘッドが最小限であることが示されています。

于 2012-05-30T14:59:51.493 に答える