シナリオ:
エンティティと呼ばれる対多関係 (逆関係) を持つエンティティがあるAuthor
とします。オブジェクトの既存のコレクションがある場合、1回のフェッチ要求でそれらすべての関係をフォールトしたいと考えています。books
Book
author
Author
books
コード
これは私がこれまでに試したことです:
NSArray *authors = ... // array of `Author` objects
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Book"];
fetchRequest.returnsObjectsAsFaults = NO;
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"author IN %@", authors];
books
このフェッチ リクエストを実行しても、アレイ内のオブジェクトの関係に障害が発生することはありませんauthors
(ロギングによって検査されます)。
また、逆の方法でフェッチリクエストを実行しようとしました:
NSArray *authors = ... // array of `Author` objects
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Author"];
fetchRequest.returnsObjectsAsFaults = NO;
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", authors];
fetchRequest.relationshipKeypathsForPrefetching = @[@"books"];
これも障害を発生させません。これを行うための適切な方法は何ですか?