2010-10-13 35 views
0

這是可能的,比較容易從使用字符串創建NSPredicate包含運營商,像這樣:創建一個NSPredicate以「載[CD]」約束編程

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

我想以編程方式創建此謂詞,因爲它可以與NSComparisonPredicate進行比較。有關於此的任何想法?

我的動機是通過編程實現它,因爲搜索字符串包含用戶輸入並且沒有預定義,所以它不太容易出錯。

海因裏希

回答

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)]; 
+0

哇,非常感謝。我知道必須有解決方案。 – Erik 2010-10-15 09:06:56