NSPredicate与多核心数据关系的完全匹配

时间:2015-01-07 17:13:10

标签: core-data many-to-many nspredicate

如果我的BlogTagNSPredicate,我将如何创建一个Blog来获得所有Tag个,其中包含两个,只有两个,具体NSPredicate *tagsPredicate = [NSPredicate predicateWithFormat:@"tags == %@", tagsArray]; s?

此:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'to-many key not allowed here'

导致致命错误:

NSSet

我认为,由于Core Data使用了多个关系的集合,我应该使用ANY tags.name IN %@,但这会产生同样的错误。

我很难过,因为像Blog这样的其他格式会返回包含两个Tag中任意一个的ALL个。 IN*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unsupported predicate ALL tags.name IN {iOS, programming}' 相结合会导致崩溃:

{{1}}

如果没有在查询后过滤结果,我想要的是不可能的吗?

1 个答案:

答案 0 :(得分:2)

尝试以下几点:

[NSPredicate predicateWithFormat:@"SUBQUERY(tags, $t, $t IN %@).@count = 2 AND SUBQUERY(tags, $t, NOT $t IN %@).@count = 0", tagsArray, tagsArray];

(即在自然语言中,与我的数组匹配的标签数为2,与我的数组不匹配的计数为0)。