9

如何创建可以获取的谓词:所有问题都不包含answer.correct = "1".

如果返回的数组包含“0”和“1”,则以下谓词不起作用:

[NSPredicate predicateWithFormat:@"NONE answers.correct IN %@", [NSArray arrayWithObject:@"1"]];

还尝试了 NOT (ANY ...) :相同的结果

这是一个错误吗?

数据模型

4

1 回答 1

23

简短回答:要使用“正确 == 1”获取所有没有任何“答案”的对象,请使用以下 SUBQUERY

[NSPredicate predicateWithFormat:@"SUBQUERY(answers, $a, $a.correct == 1).@count == 0"]

解释:两个谓词

[NSPredicate predicateWithFormat:@"NONE answers.correct == 1"]
[NSPredicate predicateWithFormat:@"NOT (ANY answers.correct == 1)"]

应该可以工作(因为我理解 NOT 和 ANY 关键字),但他们没有。它们返回相同的结果集

[NSPredicate predicateWithFormat:@"ANY answers.correct != 1"]

-com.apple.CoreData.SQLDebug 3通过设置启动参数和检查 SQL 选择语句可以看出。

这对我来说似乎是一个核心数据错误。使用 SUBQUERY 是解决该问题的方法。

于 2013-01-23T06:05:48.013 回答