从使用 contains 运算符的字符串创建NSPredicate是可能的,而且很容易,如下所示:
[NSPredicate predicateWithFormat:@"name contains[cd] \"Hello!\""];
我想以编程方式创建此谓词,因为可以与 NSComparisonPredicate 进行比较。有关于此的任何想法吗?
我以编程方式执行此操作的动机是,它不易出错,因为搜索字符串包含用户输入且未预定义。
海因里希
答案 0 :(得分:6)
当然,这很简单:
NSExpression * leftExpression = [NSExpression expressionForKeyPath:@"name"];
NSExpression * rightExpression = [NSExpression expressionForConstantValue:@"Hello!"];
NSComparisonPredicate * predicate = [NSComparisonPredicate predicateWithLeftExpression:leftExpression
rightExpression:rightExpression
modifier:NSDirectPredicateModifier
type:NSContainsPredicateOperatorType
options:(NSCaseInsensitivePredicateOption | NSDiacriticInsensitivePredicateOption)];