批处理对象集合的多对多关系

时间:2013-10-20 20:12:30

标签: objective-c core-data nsfetchrequest

情境:

假设我有一个名为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"];

这也不会引发故障。这样做的恰当方式是什么?

0 个答案:

没有答案