情境:
假设我有一个名为Author
的实体,它与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"];
这也不会引发故障。这样做的恰当方式是什么?