比较过多关系中的两个属性的 CoreData 谓词

Posted

技术标签:

【中文标题】比较过多关系中的两个属性的 CoreData 谓词【英文标题】:CoreData Predicate That Compares Two Properties in a Too-Many Relationship 【发布时间】:2014-09-18 12:38:07 【问题描述】:

我正在尝试构建一个谓词来比较过多关系的两个成员。 下面的代码更清楚地显示了我的意图,但似乎不起作用(假设 objects 是太多的关系并且有成员 member1member2):

[NSPredicate predicateWithFormat:
 @"(ANY objects.member1 ==[cd] objects.member2)"];

感谢任何帮助确定此类比较的结构正确的谓词。

【问题讨论】:

仍然不确定如何进行此类比较。我最终做的是将布尔值存储为代表比较结果的对象的成员。不过,仍然有兴趣知道如何进行这种比较。 【参考方案1】:

假设您要获取与至少一个对象相关的对象 “member1 == member2”,你必须使用一个 SUBQUERY:

[NSPredicate predicateWithFormat:@"SUBQUERY(objects, $o, $o.member1 == $o.member2).@count > 0"]

您可以在NSExpression Class Reference 中找到类似的示例。

【讨论】:

感谢您的解决方案。代码中有错字,但这个概念有效。

以上是关于比较过多关系中的两个属性的 CoreData 谓词的主要内容,如果未能解决你的问题,请参考以下文章

Core Data 多对多谓词(再次)

核心数据:谓词中的对象

CoreData 谓词 ANY + AND 与多对多关系

如何从 Core Data 中的关系相关实体获取属性?

Swift CoreData,通过多对多关系保存数据

CoreData:使用 IN 基于谓词/数组进行排序