我有这个谓词:
NSPredicate * thePredicateKeyword = [NSPredicate predicateWithFormat:@"any keywords.thekeyword beginswith [cd] %@", searchTerm];
基本上每个企业与关键字有很多关系。
但是假设我没有一个searchTerm。说我有一个阵列。
我该怎么做?
我想我可以为每个做出谓词并将它们与谓词等结合起来
但是,是否可以使用in
关键字或类似内容更有效地执行此操作?
答案 0 :(得分: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];
}
答案 1 :(得分:0)
这就是我实际使用的。然而,我选择的anwer是激发它的灵感。
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;