如何创建可以获取的谓词:所有问题都不包含answer.correct = "1"
.
如果返回的数组包含“0”和“1”,则以下谓词不起作用:
[NSPredicate predicateWithFormat:@"NONE answers.correct IN %@", [NSArray arrayWithObject:@"1"]];
还尝试了 NOT (ANY ...) :相同的结果
这是一个错误吗?
如何创建可以获取的谓词:所有问题都不包含answer.correct = "1"
.
如果返回的数组包含“0”和“1”,则以下谓词不起作用:
[NSPredicate predicateWithFormat:@"NONE answers.correct IN %@", [NSArray arrayWithObject:@"1"]];
还尝试了 NOT (ANY ...) :相同的结果
这是一个错误吗?
简短回答:要使用“正确 == 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 是解决该问题的方法。