如何创建可以获取的谓词:所有问题都不包含answer.correct = "1"
。
如果返回的数组包含“0”和“1”,则以下谓词不起作用:
[NSPredicate predicateWithFormat:@"NONE answers.correct IN %@", [NSArray arrayWithObject:@"1"]];
还尝试使用NOT(ANY ...):相同的结果
这是一个Bug吗?
答案 0 :(得分:18)
简答:要获取所有没有“正确== 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 select语句来看到。
这对我来说似乎是一个核心数据错误。使用SUBQUERY是解决该问题的方法。