9

フェッチできる述語を作成するにはどうすればよいですか。すべての質問にが含まれているわけではありませんanswer.correct = "1"

返された配列に「0」と「1」が含まれている場合、次の述語は機能しません。

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

NOT(ANY ...)でも試してみました:同じ結果

これはバグですか?

データ・モデル

4

1 に答える 1

23

簡単な答え:「正しい== 1」の「答え」がないすべてのオブジェクトを取得するには、次の サブクエリを使用します。

[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起動引数を設定し、SQLselectステートメントを調べることでわかるように。

これは私にはCoreDataのバグのように思えます。SUBQUERYを使用すると、その問題の回避策になります。

于 2013-01-23T06:05:48.013 に答える