使用嵌套的 NSPredicate SUBQUERY
Posted
技术标签:
【中文标题】使用嵌套的 NSPredicate SUBQUERY【英文标题】:Using nested NSPredicate SUBQUERY 【发布时间】:2013-11-02 20:18:39 【问题描述】:这是我的对象图的相关部分:
Store <-->> Gift <<--> Person <<-->> Tag
我希望能够通过 tag.filtering 属性过滤商店,如下所示:
ANY gifts.person.tags.filtering == YES
但我理解为什么这不起作用,因为限制为一对多键。所以我尝试使用一组嵌套的 SUBQUERY 谓词,如下所示:
NSPredicate* filterPredicate = [NSPredicate predicateWithFormat:
@"(0 != SUBQUERY(gifts, $x,
(0 != SUBQUERY($x.person.tags, $y, $y.filtering==YES).@count)).@count)"];
这在运行时失败并出现错误:
"SQLite error code:1, 'no such column: t3.ZFILTERING'"
似乎我在正确的轨道上,在这里,但找不到使用相同语法的任何其他示例。我错过了什么?
【问题讨论】:
我看不到明显的错误。你可以试试[NSPredicate predicateWithFormat:@"SUBQUERY(gifts, $x, ANY $x.person.tags.filtering == YES).@count != 0"]
吗?这应该做同样的事情,但稍微简单一些。
是的,这行得通。我想我想太多了。谢谢!
【参考方案1】:
根据我上面的评论:
[NSPredicate predicateWithFormat:@"SUBQUERY(gifts, $x, ANY $x.person.tags.filtering == YES).@count != 0"]
有效,甚至比嵌套的 SUBQUERY 更简单。
【讨论】:
以上是关于使用嵌套的 NSPredicate SUBQUERY的主要内容,如果未能解决你的问题,请参考以下文章