私はクライアントエンティティとジョブエンティティを持っています。コアデータ述語1対多および多対1の問題
各ジョブには1つのクライアントを割り当てることができます。クライアント(クライアント< - >>ジョブ)のジョブの関係は、jobOfClientと呼ばれます。
各クライアントには多くのジョブがあります。ジョブのクライアント(ジョブ< < - >クライアント)の関係は、clientOfJobと呼ばれます。
(もちろん、これらは逆の関係です。)
私が働いているいくつかの述語を持っていますが、最後のものはありません。私は、任意のクライアントに関連していない仕事を探して、仕事を通じてソート、ここで
:
NSEntityDescription * entity = [NSEntityDescription entityForName:@"Job" inManagedObjectContext:dataInterface.managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"clientOfJob == nil"];
fetchedResultsControllerのいくつかは、設定除外、ここでのコードの主要行の一部は、3例のためのものです
は、ここで私の並べ替えの仕事を通じて、特定のクライアントの仕事を探して:
NSEntityDescription * entity = [NSEntityDescription entityForName:@"Job" inManagedObjectContext:dataInterface.managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"clientOfJob == %@", userState.selectedClient];
しかし、この次は動作しません。ここでは、選択したジョブに関連付けられている1つのクライアントを検索してクライアントをソートします(または関連するクライアントがない場合は結果を返しませんが、ここでは該当しません)。
NSEntityDescription * entity = [NSEntityDescription entityForName:@"Client" inManagedObjectContext:dataInterface.managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"jobOfClient == %@", userState.selectedJob];
エラーメッセージが理由、キャッチされない例外により「NSInvalidArgumentException」にアプリを終了です:「に、多くの主要ここでは使用できません」
が、私は理解していないことをここに微妙な何かがあるに違いありません。 **誰かが私が与えた情報で**私を助けることができますか?コレクションは、単一の値に等しくなることはありません、明らかに
NSSet *jobs = [thisObject jobOfClient];
return ([jobs isEqual:aJob]);
などCoreDataは、述語を認識しません:
ありがとうございます。 NSPredicate *述語= [NSPredicate predicateWithFormat:@ "ANY jobOfClient ==%@"、userState.selectedJob];この問題を解決するには、 - キーワードanyは、セット内のすべてを見渡すようにしました。 – Jim