核心数据和查询查询结果

时间:2012-05-21 01:34:08

标签: ios core-data predicate

我的模型中有两个实体,ABAB具有多对多关系,其反向是与A之间的一对一关系。我想使用B获取实体A的结果,如下所示:

  1. 使用一些谓词对实体A执行获取请求。
  2. 在此请求返回的结果中,通过第二个谓词深入查看所有相关的B和这些过滤器。
  3. 返回实体B的所有有效结果。
  4. 当然我可以做(1)然后使用第二个谓词过滤B的数组。但是我知道这不是最理想的。

    如果使用单个提取和谓词,我怎样才能最有效地完成这项工作?

2 个答案:

答案 0 :(得分:1)

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

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

您可以在谓词中使用'dot'表示法......我也可能会向后搜索...

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

从部门到员工之间存在一对多的关系。以上内容抓住了属于名称中具有“支持”的部门的所有员工。

答案 1 :(得分:1)

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

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