Core Data モデルを正しく設定すると、Category エンティティから Item エンティティへの対多関係と、Item から Category への逆対一関係が確立されます。また、対多関係には「カスケード」削除ルール、対一関係には「無効化」削除ルールがあります。
これを仮定すると、Item オブジェクトを挿入するたびに、Category 関係を設定すると、対応する Category に Item が自動的に挿入されます。アイテムを削除すると、対応するカテゴリから自動的に削除されます。
カテゴリ側では、カテゴリを削除すると、対応するすべてのアイテム オブジェクトが自動的に削除されます。
したがって、Items を取得すると、各 Item オブジェクトに対応する Category オブジェクトが既に取得されています。他に何もする必要はありません。デフォルトでは、フェッチ中に実際に Category オブジェクトを取得していないことに注意してください。代わりに、オブジェクトに最初にアクセスしようとしたときにエラーが発生し、その時点でオブジェクトが取得されます。フェッチしたばかりの Item オブジェクト内に格納されている Category オブジェクトをすぐに使用する予定がない場合、これによりパフォーマンスが向上します。Item をフェッチするたびに Category オブジェクトを使用する場合は、NSFetchRequest メソッドを使用する必要があります。
- (void)setReturnsObjectsAsFaults:(BOOL)yesNo
- (void)setRelationshipKeyPathsForPrefetching:(NSArray *)keys
フォールトが必要であり、Category 関係のプリフェッチを要求することを Core Data に伝えます。