1

私はこの述語を持っています:

NSPredicate * thePredicateKeyword = [NSPredicate predicateWithFormat:@"any keywords.thekeyword beginswith [cd] %@", searchTerm];

基本的に、各ビジネスはキーワードと多対多の関係にあります。

しかし、searchTerm が 1 つもないとします。配列があるとします。

どうすればいいですか?

それぞれの述語を作成して、または述語などと組み合わせることができると思います。

inただし、キーワードなどを使用してこれをより効率的に行う方法はありますか?

4

2 に答える 2

3

次のようなものを返す関数はどうでしょうか。

-(NSPredicate *)createCompoundPredicateForSearchTerms:(NSArray *)searchTerms
{
  NSMutableArray *subPredicates = [[NSMutableArray alloc] init];

  NSEnumerator *searchTermEnum = [searchTerms objectEnumerator];
  NSString *searchTerm;
  while (searchTerm = [searchTermEnum nextObject]) {
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"keywords.thekeyword beginswith [cd] %@", searchTerm];
    [subPredicates addObject:predicate];
  }

  return [NSCompoundPredicate andPredicateWithSubpredicates:subPredicates];
}
于 2012-10-30T06:32:54.317 に答える
0

これは私が実際に使っているものです。しかし、私が選んだ回答は、それを刺激するものです。

NSArray * keywords = [searchTerm componentsSeparatedByString:@" "];

NSMutableArray * keywordPredicates = [NSMutableArray array];

for (NSString * aKeyword in keywords) {
    NSPredicate * thePredicateKeyword = [NSPredicate predicateWithFormat:@"any keywords.thekeyword beginswith [cd] %@", aKeyword];
    [keywordPredicates addObject:thePredicateKeyword];
}

NSPredicate * thePredicateKeyword = [NSCompoundPredicate orPredicateWithSubpredicates:keywordPredicates];

return thePredicateKeyword;
于 2012-10-31T03:55:59.727 に答える