文字列と一連のオブジェクトに一致するオブジェクトを見つけようとしています。私の述語は次のようになります。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@ and individuals CONTAINS %@", name, individuals];
ヒットが出ません。名前と個人のセットに一致するエンティティがあることは知っていますが。
述語の何が問題になっていますか?
編集:私はいくつかの進歩を遂げることができました。問題は、既存のグループ名と既存の連絡先、つまり groupname = "test" および individual.name = "john doe" および individual.contactInfo = "123" を持つグループを検索しようとすると、このグループが正しく検出されることです。しかし、同じグループ名と同じ連絡先 + 別の連絡先を持つグループがある場合、この不要なグループも見つかります。
述語に正確に一致するグループのみが必要です。
私は今、これを行うことで副述語を使用しています:
NSMutableArray *subPredicates = [NSMutableArray initWithCapacity:5];
// Add group name to predicate
[subPredicates addObject:[NSPredicate predicateWithFormat:@"name == %@", name]];
for (NSDictionary *contactInfo in individuals) {
NSString *name = [contactDict objectForKey:@"name"];
NSString *contactInfo = [contactDict objectForKey:@"contactInfo"];
NSPredicate *individualPredicate = [NSPredicate predicateWithFormat:@"ANY individuals.name LIKE %@ AND any individuals.contactInfo LIKE %@", name, contactInfo];
[subPredicates addObject:individualPredicate];
}
NSPredicate *individualsPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:subPredicates];
Group *group = // do the fetch with the predicate