OGeek|极客世界-中国程序员成长平台

标题: ios - 具有多个关系的核心数据 NSPredicate [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 03:57
标题: ios - 具有多个关系的核心数据 NSPredicate

我需要发出一个 fetch 请求,但我无法确定该请求所需的 NSPredicate。这是场景:

我有一个 List 实体,并且 list 对象与一组 Request 对象具有一对多关系。每个 Request 对象与一组 Tags 对象具有一对多关系。

我需要对 Tags 实体执行提取请求,但我无法确定调用的 NSPredicate。我只想提取特定列表的所有请求的所有标签中的 tags

这是我尝试过的:

 NSPredicate *predicate = [NSPredicate predicateWithFormat"tag in ANY list.requests.tags"];

但我知道这是不对的。我无法指定我的列表,list.requests 也返回一个 NSSet,我不能只在一个放。我被困住了。

我附上了一张关系图,以防万一:

enter image description here



Best Answer-推荐答案


创建子查询。

NSPredicate* predicate = [NSPredicate predicateWithFormat"SUBQUERY(requests, $request, $request.list = %@).@count > 0", list];

这会计算具有指定列表的请求;如果计数大于一,则取标签。

你也可以这样做:

[list.requests valueForKeyPath"tags.@distinctUnionOfSets"]

这使用键值编码来检索属于所有请求的所有标签,并将它们统一到一个集合中。这种方法比前者效率低。

关于ios - 具有多个关系的核心数据 NSPredicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15933080/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4