以编程方式创建具有“包含[cd]”约束的NSPredicate

时间:2010-10-13 16:07:30

标签: iphone objective-c

从使用 contains 运算符的字符串创建NSPredicate是可能的,而且很容易,如下所示:

[NSPredicate predicateWithFormat:@"name contains[cd] \"Hello!\""];

我想以编程方式创建此谓词,因为可以与 NSComparisonPredicate 进行比较。有关于此的任何想法吗?

我以编程方式执行此操作的动机是,它不易出错,因为搜索字符串包含用户输入且未预定义。

海因里希

1 个答案:

答案 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)];