假设我具有类型为“obj”的核心数据对象,该对象的属性为“propertyA”,并且与具有两个属性为“propertyB”和“propertyC”的类型为“sub”的对象存在一对多关系。

我想获取所有具有等于值的propertyA和具有propertyB和propertyC设置的子obj的obj。

如果只是propertyA和propertyB,我会做

[NSPredicate predicateWithFormat:@"ANY sub.propertyB = %@ AND propertyA == %@", ...];

问题是我不知道如何添加第二个属性。我只需要具有至少一个具有两个属性true的子对象的objs。我已经尝试了以下方法,但是不起作用:
[NSPredicate predicateWithFormat:@"ANY (sub.propertyB = %@ AND sub.propertyC) AND propertyA == %@", ...];

我已经尝试过不带ANY的功能,但这也不起作用。我怎样才能做到这一点?

最佳答案

由于您与子对象之间存在多对多关系,因此subsobj属性返回一个集合,而不是单个对象。要查询集合,您需要使用一个子查询。

子查询具有以下形式:

SUBQUERY(collection, $individualCollectionItem, expression-with-collection-item)

在这种情况下,您会想要类似
SUBQUERY(subs,$s,$s.propertyB==%@) AND SUBQUERY(subs,$s,$s.propertyC!=NULL)

10-05 20:24