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

Eri*_*rik 0 iphone objective-c

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

[NSPredicate predicateWithFormat:@"name contains[cd] \"Hello!\""];
Run Code Online (Sandbox Code Playgroud)

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

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

海因里希

Dav*_*ong 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)];
Run Code Online (Sandbox Code Playgroud)