繁体   English   中英

核心数据多对多关系NSPredicate

[英]Core Data Many-to-Many Relationship NSPredicate

我有一个具有多对多关系的数据模型,例如EntityA <-->> EntityB <<--> EntityC 我曾经使用不同的搜索条件查询EntityA ,并且将NSCompoundPredicateNSPredicate数组一起使用。 谓词之一,我想查询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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM