2010-10-13 5 views
0

il est possible et assez facile de créer un NSPredicate à partir d'une chaîne qui utilise le contient opérateur, comme ceci:Création d'un NSPredicate avec un « contient [cd] » contrainte par programmation

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

Je voudrais pour créer ce prédicat par programme, car il peut être fait pour les comparaisons avec le NSComparisonPredicate. Des idées à ce sujet? Ma motivation pour le faire par programmation est qu'il est moins sujette aux erreurs car les chaînes de recherche ont une entrée utilisateur incluse et ne sont pas prédéfinies.

Heinrich

Répondre

6

Bien sûr, il est assez simple:

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

Wow, merci beaucoup. Je savais qu'il devait y avoir une solution. – Erik

Questions connexes