核心数据谓词,用于关联实体的任何行

时间:2016-12-10 10:25:26

标签: core-data many-to-many any

在下文中,我将描述我的核心数据架构的简化,我非常肯定会与我的实际情况相同。

enter image description here

我有两个实体FirstSecond由多对多关系r链接。

Second有两个布尔属性,我们称之为takeyou_should_not_take。 我想创建一个选择First行的查询,如果它与[{1}}的{​​{1}}相关联,则会Second

我试过这个谓词:

take = true

但Core Data给出了以下错误:NSPredicate(format: "ANY (%K == YES && %K == NO)", "r.take","r.you_should_not_take")

也许我必须使用它:

"[General] Unable to parse the format string"

但我担心这最后一个查询会选择NSPredicate(format: "((ANY %K == YES) && (ANY %K == NO))", "r.take","r.you_should_not_take") 行,如果它存在First xSecond&&如果x.take == YES ySecond,则存在y.you_should_not_take == NO行,但不保证x == y

SQL查询非常简单,但我对Core Data不太熟悉,所以虽然我会尝试更多查询(我将测试第二个查询是否按照我的想法进行测试)我有也问这里希望答案就像SQL一样简单。

1 个答案:

答案 0 :(得分:1)

选择与(至少一个)第二个对象相关的所有第一个对象,其中take==trueyou_should_not_take==false 使用SUBQUERY。像(未经测试)的东西:

SUBQUERY(r, $x, $x.take == YES AND $x.you_should_not_take == NO).@count > 0