Core data 如何在nsFetchRequest中创建按不同实体的两个参数过滤的compoundpredicate

Core data 如何在nsFetchRequest中创建按不同实体的两个参数过滤的compoundpredicate,core-data,filter,fetch,predicate,nscompoundpredicate,Core Data,Filter,Fetch,Predicate,Nscompoundpredicate,有关我的数据模型的一些背景信息: manufacturer <-->> item <<-->> tag 这将生成所有项目的列表。我想筛选与特定制造商有关系的项目。所以我在所有项目的列表之后添加了一个谓词,它按照selectedManufacturer进行排序 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"itemToMa = %@", selectedManufacturer];

有关我的数据模型的一些背景信息:

manufacturer <-->> item <<-->> tag
这将生成所有项目的列表。我想筛选与特定制造商有关系的项目。所以我在所有项目的列表之后添加了一个谓词,它按照selectedManufacturer进行排序

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"itemToMa = %@", selectedManufacturer];
这是可行的,但会抓取很多将被过滤掉的项目。对于大型数据集,我假设它搜索所有项目而不仅仅是与一个制造商相关的项目时,速度会越来越慢。我想筛选初始“rankingRequestForItem”方法中的项目


是否可以将上述谓词与顶部谓词一起移动并创建一个复合谓词

我不会担心性能。核心数据在幕后很好地管理了这一点。有时谓词的顺序很重要,所以可以先使用制造商过滤器


您可以按照问题注释中的建议将谓词组合成一个谓词,或者使用复合谓词-结果几乎相同。

[NSPredicate predicateWithFormat:@SELF!=%@和itemToMa=%@,item.objectID,selectedManufacturer]我再次尝试使其比需要的更复杂,感谢Dan提供了简单有效的解决方案。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"itemToMa = %@", selectedManufacturer];