我的模型中有两个实体,A
并且B
. A
与 具有一对多关系B
,并且它的逆是与 的一对一关系A
。我想B
使用A
如下方式获取实体的结果:
A
使用某些谓词对实体执行获取请求。- 在此请求返回的结果上,钻取到所有相关
B
的 s 并通过第二个谓词过滤这些过滤器。 - 返回 entity 的所有有效结果
B
。
当然,我可以做 (1),然后B
使用第二个谓词过滤一个 s 数组。但是我知道这是次优的。
即使使用单个提取和谓词,我怎样才能最有效地做到这一点?
如果您已经持有 A 的实例,只需通过 A 的访问器访问相关的 B 实例。
如果您需要直接获取与特定 A 相关的所有 B(在这种情况下不需要),您将为 B 实体构建一个获取请求,其谓词基于 Bs 与 A 的(反向)关系. (具体语法将取决于逆关系名称,以及该逆关系是一对一还是一对多。)
不幸的是,我不确定你在问什么。如果您提供更多详细信息,那肯定会有所帮助。
所以,我只需要猜测......请记住,获取请求只能返回一种类型的实体。所以,如果你想要关系中多方面的东西,那就去拿它。
你可以在你的谓词中使用'点'符号......我也可能会向后搜索......
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Employee"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"department.name like 'Support'"];
从部门到员工是一对多的关系。上面抓取了属于名称中带有“支持”的部门的所有员工。