0

EntityAは対多関係にありますEntityB(および とEntityB対一関係にありEntityAます)。の配列がありますEntityB(より正確には、を表すNSArrayインスタンスを含む があります)。配列内の少なくとも 1 つの s と関係があるすべての s をフェッチするを作成したいと考えています。このフェッチ要求の述語をどのように記述すればよいですか?NSManagedObjectEntityBNSFetchRequestEntityAEntityB

以下は機能しますが、最適ではないと思います。理解するのは難しく、これを表現するより良い方法があるに違いないと確信しています。

NSArray *entityBs = ...;
NSMutableArray *containsEntityBSubPredicates = [NSMutableArray new];
for (NSManagedObject *entityB in entityBs) {
    [containsEntityBSubPredicates addObject:[NSPredicate predicateWithFormat:@"%@ IN entityBs", entityB]];
}
NSPredicate *containsEntityBsPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:containsEntityBSubPredicates];

私もこれを試しましたが、うまくいきません:

NSArray *entityBs = ...;
NSPredicate *containsEntityBsPredicate = [NSPredicate predicateWithFormat:@"ANY %@ in entityBs", entityBs];

もっと簡単な解決策がありませんか?

4

1 に答える 1

1

パラメータを切り替えるだけで、述語がほぼ完成しました。

[NSPredicate predicateWithFormat:@"ANY entityBs in %@", entityBArray];

詳細については、Apple のサンプル コードをIN 参照してください。

于 2013-04-18T09:13:00.417 に答える