NSPredicate复杂查询

时间:2014-06-27 15:11:21

标签: ios objective-c nspredicate

我遇到了一个我无法解决的复杂NSPredicate问题。

我的数据结构如下:

类别 - 有很多标题

标题 - 有很多产品

标题 - 具有latestProduct属性(title.latestProduct

可以通过排除属性(title.excluded = YES)排除标题 可以通过排除属性(product.excluded = YES

排除产品

我正在寻找的结果:我需要获取系统中所有类别的列表,但是我想要排除以下类别:

  • 不包括所有类别标题(category.titles.excluded == YES)

OR

  • 不包括所有最新产品(category.titles.latestProduct.excluded == YES

OR(这对我来说很难)

  • category.titles.excluded == YES)计数的总和和(category.titles.latestProduct.excluded == YES)的计数等于类别标题的数量(category.titles.count

我可以用简单的英语描述我的问题,但无法找到将其格式化为谓词的正确方法。非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

所以我最终使用ANY子句和子查询的组合来解决这个问题。谓词如下:

ANY productTitles.excluded == nil && SUBQUERY(productTitles, $x, SUBQUERY($x.products, $y, $y.excluded == nil).@count != 0 ).@count != 0

我认为子查询基本上是“ANY”子句的工作方式,但我无法弄清楚如何为子查询的子查询做一个ANY子句。