ios - 具有关系的 CoreData NSPredicate

标签 ios core-data nspredicate

我有以下 CoreData 对象模型

enter image description here

现在我在使用以下条件制作谓词时遇到问题。

获取所有那些 DBOpportunity WHERE

DBOpportunity.stateCode == 1

DBOpportunity.invoiceDate >= GIVEN_DATE

DBOpportunityLines.crmAccept == 1 或 DBOpportunityLines.crmAccept == 3

我已经尝试了 apple 提供的大量示例和编程指南但无法实现这一目标。

最佳答案

opportunitylines 是一种对多 关系,因此一个 DBOpportunity 对象有多个 DBOpportunityLines 对象。假设最后一个条件

DBOpportunityLines.crmAccept == 1 OR DBOpportunityLines.crmAccept == 3

应该适用于任何的相关对象,您需要一个子查询:

NSDate *givenDate = ...;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"stateCode == 1 AND invoiceDate >= %@ "
    "AND SUBQUERY(opportunitylines, $x, $x.crmAccept == 1 OR $x.crmAccept == 3).@count > 0",
    givenDate];

备注:不幸的是,在谓词中使用 SUBQUERY 的文档很少。有 one example在 NSExpression 类引用中。另见 Quick Explanation of SUBQUERY in NSPredicate Expression .

关于ios - 具有关系的 CoreData NSPredicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16728294/

相关文章:

ios - GMT 和 UTC 格式器与 NSDateFormatter

objective-c - 如何管理核心数据中的一对多关系?

swift - 更新后的核心数据模型属性无法访问?

ios - 调用核心数据操作时崩溃并显示 "failed to scene-update in time"消息

ios - 在 IOS 中使用 NSPredicate 按数组的一个元素过滤数组的 NSArray

ios - 如何使用 Mapbox 实时更改位置时打印

objective-c - "unrecognized selector sent to instance"异常错误

iphone - 为我的设备构建时,如何选择 Xcode 4 将使用哪个构建配置?

具有多个 sortDescriptors 和 Bool 过滤器的 Swift fetchRequest

swift - 如何借助 NSPredicate 使用自定义对象数组实现搜索?