私の質問は少し混乱するかもしれませんが、私はより良いタイトルを見つけることができませんでした。私は説明しましょう:私はCoreDataを使ってオブジェクトを保存し、永続化するiOS Appを開発しています。私はUITableView
に格納されたオブジェクトを表示したいと思います。すべてのオブジェクトにはの日付が含まれています。私は、私のテーブルビューにオブジェクトを日付でソートして表示し、毎月はそのテーブルビュー内のセクションにします。テーブルビューは、データが表示され前にあるどのように多くの行やセクションを知っている必要があるのでCoreDateまたはその他すべてから必要なデータのみを取得しますか?
+--------------------+
+--- March 2016 ---+
+--------------------+
+ - Entry 1 +
+ - Entry 2 +
+--------------------+
+-- February 2016 --+
+--------------------+
+ - Entry 1 +
+ ..... +
.
.
.
.
+--------------------+
は、私は私のCoreDataストレージ内であり、少なくともどのように多くのエントリを知る必要があります。
アプローチ1
私は、各オブジェクトの日付だけを取得し、それを表示するために持っているどのように多くの行をテーブルビューを伝えます。データソースメソッドcellForRowAtIndexPath
が呼び出されると、私は必要なオブジェクトに対して正確にデータを取得します。 CoreDataはそれを実行するのに十分速いのですか、またはデータがロードされるまでユーザーはしばらく待たなければなりませんか?
アプローチ2
私はCoreDataストレージおよび「ストア」テーブルビューを保持している私のViewController
内のオブジェクトからすべてを取得します。たぶん、すべての単一のオブジェクトをメモリに保持するためには、多くのメモリが必要になるかもしれません。
アプローチ3(遅延ロード?)
私はCoreDataから最新の10-20オブジェクトを取得します。ユーザーがテーブルビューをスクロールダウンして最後のエントリに近づくと、次の10〜20エントリを取り出して表示します。最初に読み込んだエントリはどうですか?私はそれらを記憶に残すべきですか?または、ユーザーが上にスクロールした場合にもう一度それらをフェッチしますか?
私はそれに時間を無駄にしたくないし、自分ひとりひとりを試したいと思っています。あなたが私を助けてくれることを願っています。ありがとうございました!
アプローチ3が最適です。オブジェクトがフェッチされると、それらをビューコントローラの変数配列に格納します。ユーザーがさらにフェッチしたら、配列を追加してテーブルをリロードします。 カウントが必要な場合にのみカウントを取得することもできますが、ここでは最適な方法ではない可能性があります。 –
あなたは 'NSFetchedResultsController'を見ましたか? –