假设我具有类型为“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的功能,但这也不起作用。我怎样才能做到这一点?
最佳答案
由于您与子对象之间存在多对多关系,因此subs
的obj
属性返回一个集合,而不是单个对象。要查询集合,您需要使用一个子查询。
子查询具有以下形式:
SUBQUERY(collection, $individualCollectionItem, expression-with-collection-item)
在这种情况下,您会想要类似
SUBQUERY(subs,$s,$s.propertyB==%@) AND SUBQUERY(subs,$s,$s.propertyC!=NULL)