アプリに「ノートブック」エンティティを持つ Core Data モデルがあります。1 つまたは複数の「ノートブック」インスタンスにアクセスするには、次の 2 つの方法があります。
- 特定の「タイトル」または「インデックス」属性を持つインスタンスを要求する述語で NSFetchRequest を実行する。
- Core Data モデルに 'AppData' エンティティを追加することで、'Notebook' の 'index' 属性を省略し、代わりに 'AppData' から 'Notebook' への対多の順序付き関係を作成します。次に、最初のアプリの起動時に「AppData」インスタンスを作成し (その後の起動のたびに、その唯一の「AppData」インスタンスを要求してフェッチします)、対多関係を通じてすべての「ノートブック」インスタンスにアクセスします。タイトルでノートブックにアクセスするには、indexOfObjectPassingTest または高速な obj-c 列挙を使用します。インデックスでアクセスするには、objectAtIndex を使用します。
「ノートブック」インスタンスとその属性について「AppData」インスタンスをクエリする方が、管理対象オブジェクト コンテキストに毎回フェッチ要求を設定するよりもはるかに簡単です。
しかし、どちらの方法がより高速でしょうか? 1 つのメソッドがより多くのメモリを使用するか、より多くの時間をメモリ内にとどめるでしょうか? 対多関係のオブジェクトは遅延ロードされると読みましたが、そのセットのオブジェクトはいつロードされますか? いつアンロードされますか?