モデルでこれらのエンティティを定義しています。
[Sample]
- results (to many relation with [Result])
[Parameter]
- results (to many relation with [Result])
- compliant (number value)
[Result]
- parameter (relation with [Parameter])
- sample (relation with [Sample])
[Sample] オブジェクト "MySample" の場合、次のすべての [Parameter] オブジェクトを取得する必要があります。
[Result].compliant = 1 AND [Result].sample = MySample
したがって、これらの述語の合計になる述語を使用して [Parameter] オブジェクトをフェッチしようとしています。
// returns all parameters that have a result compliant value equal to 1:
ANY results.compliant = 1
// returns all parameters related with my [Sample] object:
ANY results.sample = MySample
両方の述語は期待どおりに機能しますが、[Sample] オブジェクトに接続されたすべてのパラメーターを取得する必要があるため、一緒に使用したいと思います。結果の準拠値は 1 です。
私はそのようなことを試しました:
ANY (results.compliant = 1 AND results.sample = MySample)
しかし、「無効な述語」の例外が発生します。
SUBQUERY も使用しようとしましたが、例外が発生します。
Can't have a non-relationship collection element in a subquery
そのクエリに注目したいと思います:
ANY results.compliant = 1 AND ANY results.sample = MySample
は有効なクエリですが、探しているものではありません。
[Result] オブジェクトが [Sample] オブジェクトに接続され、準拠値が 1 に等しいすべての [Parameter] オブジェクトを与える単一の述語でこの問題を解決するにはどうすればよいですか?
アップデート:
NSCompoundPredicate を使用しても期待どおりの結果が得られません。私はこのようなものが必要です:
ANY (results.compliant = 1 AND results.sample = MySample)
複合述語を使用すると、次のように機能します。
(ANY results.compliant = 1) AND (ANY results.sample = MySample)
複合述語は、適合値が 1 に等しい結果を持つパラメーターと、MySample に接続された結果を持つパラメーターを提供しますが、必要なのは、MySample に接続され、かつ適合値が 1 に等しい結果を持つパラメーターを取得することです (両方とも条件は、単一の [Result] オブジェクトに対して準拠する必要があります)。それを達成する方法はありますか?
更新 2:
間違ったSUBQUERYを使用していたようです。解決策は、使用する必要があるように使用することです:-) SUBQUERYを使用すると、適切な結果を得ることができます。