1

我的模型中有两个实体,A并且B. A与 具有一对多关系B,并且它的逆是与 的一对一关系A。我想B使用A如下方式获取实体的结果:

  1. A使用某些谓词对实体执行获取请求。
  2. 在此请求返回的结果上,钻取到所有相关B的 s 并通过第二个谓词过滤这些过滤器。
  3. 返回 entity 的所有有效结果B

当然,我可以做 (1),然后B使用第二个谓词过滤一个 s 数组。但是我知道这是次优的。

即使使用单个提取和谓词,我怎样才能最有效地做到这一点?

4

2 回答 2

1

如果您已经持有 A 的实例,只需通过 A 的访问器访问相关的 B 实例。

如果您需要直接获取与特定 A 相关的所有 B(在这种情况下不需要),您将为 B 实体构建一个获取请求,其谓词基于 Bs 与 A 的(反向)关系. (具体语法将取决于逆关系名称,以及该逆关系是一对一还是一对多。)

于 2012-05-21T05:00:10.520 回答
1

不幸的是,我不确定你在问什么。如果您提供更多详细信息,那肯定会有所帮助。

所以,我只需要猜测......请记住,获取请求只能返回一种类型的实体。所以,如果你想要关系中多方面的东西,那就去拿它。

你可以在你的谓词中使用'点'符号......我也可能会向后搜索......

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Employee"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"department.name like 'Support'"];

从部门到员工是一对多的关系。上面抓取了属于名称中带有“支持”的部门的所有员工。

于 2012-05-21T02:52:33.493 回答