核心数据不支持所有和IN谓词

我有这样的要求:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY attributes.attribute.attributeId IN %@", attributeIds]; 

这将返回一个对象列表,它具有一个或多个我设置的属性。 我想获得具有所有传递属性的对象列表,所以我试着:

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ALL attributes.attribute.attributeId IN %@", attributeIds]; 

但是我有一个例外:

 'NSInvalidArgumentException', reason: 'Unsupported predicate (null)' 

无论如何,我甚至不确定这是否是正确的要求。 说我有属性列表: [red, green, blue]我怎样才能得到至less有这些属性的所有对象?

 * Object_1 (red, green, blue) * Object_2 (red, green, blue, yellow, brown) * Object_3 (red, green blue, black, brown) 

但不是Object_4 (red, green, yellow)因为它没有blue属性(请注意,我得到所有4个对象与我的ANY获取请求,如预期的那样)

编辑,相关问题:如果我想要一个完整的匹配? 所以对于[red, green, blue]我只会得到Object_1


编辑2:我设法回答这两个问题,但我有一个新的

获取列表中至less具有所有属性的所有对象

 NSPredicate *objectsThatContainsAtLeastAllAttributesInList = [NSPredicate predicateWithFormat: @"SUBQUERY(attributes, $s, $s.attribute.attributeId IN %@).@count == %d", attributeIds, [attributeIds count]]; 

获取列表中只有属性的所有对象

 NSPredicate *objectsWhoseAttributesAreInList = [NSPredicate predicateWithFormat: @"attributes.@count == %d AND SUBQUERY(attributes, $s, $s.attributes.id IN %@).@count == %d", [attributeIds count], attributeIds, [attributeIds count]];