Core Data Model には次の 2 つのエンティティがあります。
Manufacture {name, ...other attributes}
Product {name, .... other attributes}
1 対多の関係をセットアップしました。
Manufacturer.manufactures <------>> Product.manufacturedBy
検索文字列に一致するメーカーに属するすべての製品を返す述語を作成しようとしています。たとえば、「King Nut」と「Queen Nut」という 2 つのメーカーがある場合、「Nut」で検索すると、King Nut と Queen Nut の両方で製造されたすべての製品が返されます。
フィルターが Product エンティティにある場合、述語は完全に機能しますが、Manufacturer エンティティでフィルター処理する場合、述語を取得できません。結果セットは空です。
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Product" inManagedObjectContext:[GBKDB context]];
searchValue = @"nut";
NSString *wildcardString = [NSString stringWithFormat:@"*%@*", searchValue];
私は次のことを試しました:
predicate = [NSPredicate predicateWithFormat:@"manufacturedBy.name CONTAINS[cd] %@",searchValue];
predicate = [NSPredicate predicateWithFormat:@"manufacturedBy.name like %@",wildcardString];
predicate = [NSPredicate predicateWithFormat:@"manufacturedBy.name matches %@",wildcardString];
predicate = [NSPredicate predicateWithFormat:@"ALL manufacturedBy.name like %@",wildcardString];
predicate = [NSPredicate predicateWithFormat:@"ALL manufacturedBy.name like[cd] %@",@wildcardString];