在下文中,我将描述我的核心数据架构的简化,我非常肯定会与我的实际情况相同。
我有两个实体First
和Second
由多对多关系r
链接。
Second
有两个布尔属性,我们称之为take
和you_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
x
行Second
&&如果x.take == YES
y
为Second
,则存在y.you_should_not_take == NO
行,但不保证x == y
。
SQL查询非常简单,但我对Core Data不太熟悉,所以虽然我会尝试更多查询(我将测试第二个查询是否按照我的想法进行测试)我有也问这里希望答案就像SQL一样简单。
答案 0 :(得分:1)
选择与(至少一个)第二个对象相关的所有第一个对象,其中take==true
和you_should_not_take==false
使用SUBQUERY。像(未经测试)的东西:
SUBQUERY(r, $x, $x.take == YES AND $x.you_should_not_take == NO).@count > 0