[英]Core Data Many-to-Many Relationship NSPredicate
我有一个具有多对多关系的数据模型,例如EntityA <-->> EntityB <<--> EntityC
。 我曾经使用不同的搜索条件查询EntityA
,并且将NSCompoundPredicate
与NSPredicate
数组一起使用。 谓词之一,我想查询EntityA
使用EntityC
。 我尝试使用下面的子SUBQUERY
但是没有用。
searchPredicate=[NSPredicate predicateWithFormat:@"(0 != SUBQUERY(EntityB, $B, (0 != SUBQUERY($B.EntityC, $EntityC, $EntityC.name like %@).@count)).@count)", name]
我有以下例外,
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Can't perform collection evaluate with non-collection object.'
有什么我想念的吗? 我将不胜感激任何帮助。
莎拉
(我很难为您的谓词感到困惑,因此请带一点盐。)
我认为您使这一过程过于复杂。 您应该使用键路径进行简化。 每个EntityB与EntityC都有一对一的关系,因此要搜索EntityB对象,您需要做的只是检查EntityB.entityCRelationshipName.entityCAttribute
。 所以像这样:
ALL B.EntityC.name like %@
无论如何,(如果我正确地阅读了谓词)是这样的:
SUBQUERY($B.EntityC, $EntityC, $EntityC.name like %@)
只能返回单个对象而不是集合。 因此,该谓词将无法对其进行计数。 这就是您的错误消息的意思。
我建议在存储谓词之前,在数据模型编辑器中使用谓词编辑器对哈希进行哈希处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.