4

NSPredicateを作成して、特定の日付範囲内の「セッション」を含む「プロジェクト」を検索しようとしています。私は最初にこれを試しました:

[NSPredicate predicateWithFormat:@"ANY sessions.date BETWEEN {$STARTDATE, $ENDDATE}"];

しかし、私は例外を受け取ります:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
   'to-many key not allowed here'

BETWEENはこのようにANYでは機能しないようです。また、()句とAND句の使用も制限されているため、次のようなものは使用できません。

[NSPredicate predicateWithFormat:@"ANY (sessions.date > $STARTDATE && sessions.date < $ENDDATE)"];

これを試してみると、解析エラーが発生します。そしてもちろん、sessions.dateは実際にはセットであるため、そのようにANDすることはあまり意味がありません。

これどうやってするの?

ありがとう

更新:これに注意してください:

[NSPredicate predicateWithFormat:@"ANY sessions.date > $STARTDATE && ANY sessions.date < $ENDDATE"];

開始日よりも大きいセッションと終了日よりも小さい別のセッションがあるが、間にセッションがないプロジェクトが返されるため、正しくありません。

4

1 に答える 1

11

SUBQUERYこれは、式が必要な場合だと思います。

[NSPredicate predicateWithFormat:@"SUBQUERY(sessions, $s, $s.date BETWEEN {$STARTDATE, $ENDDATE}).@count > 0"];
于 2010-04-13T16:47:18.353 に答える