Web APIで取得したデータをUITableViewに表示する必要があり、色々調べたり考えた結果をまとめました。
対象としているWeb API
- パラメータに当てはまるデータをリストで返してくるが、一度にすべてのデータを返してくるのではなく、50件とか決められた上限までのデータしか返さない。
- 続きのデータが欲しい場合は、続きの先頭番号を指定して読み出す。それもまた決められた上限までしか返さない。
最初APIアクセスが終了するまでのテーブル表示はどうするか?
- 初回は空のセルを表示する。
- 一回でも読み込み済みならデータソースをメモリ上に残しておき、それを表示する。
- もし、頻繁にデータソースが消え、空セル表示が目につくようなら、tmp領域に書き込んでおいて、それを読み出すように変更する。
次のAPIアクセスはどのタイミングで行うか?
- 定番はない模様。
- 例えば10セル前のcellForRowAtIndexPathが呼ばれたら、次のデータ読み込みを開始する。
- willDisplayCell:とcellForAtIndexPath:はペアで呼び出されているようなので、どちらでも可能だが、cellForAtIndexPathはほぼ必ず実装されているのでそちらで行う。
データは何処に溜めておくのか?メモリor永続化?
- とりあえずメモリ。
- 問題がでるようならtmp領域に永続化。
データを解放するタイミングは?
- データ量的に少なければ必要なし。
- 次のデータ読み込み時に、貯めてあるデータ量がある一定を超えたら、読み込んだのと逆側をデータを同じ分だけ解放する。