2012-02-26 4 views
0

J'ai cherché tout Internet mais je n'ai trouvé aucune explication sur l'utilisation de NSExpression dans NSPredicate. Je sais qu'il y a construit dans la fonction abs dont j'ai besoin pour mon prédicat. J'ai ce prédicat:Comment j'utilise NSExpression avec NSPredicate

NSPredicate *predicate=[NSPredicate predicateWithFormat:@"hg-%f<0.000001",[txtInput.text floatValue]]; 

J'ai besoin valeur absolue d'une partie hg- [txtInput.text floatValue]. Comment l'atteindre?

Répondre

2

Ajouter abs() autour de l'expression que vous voulez que la valeur absolue de l'intérieur de votre chaîne de prédicats

NSPredicate *predicate=[NSPredicate predicateWithFormat:@"abs(hg-%f)<0.000001",[txtInput.text floatValue]]; 
+0

Merci David. J'ai été très surpris quand je l'ai vu fonctionner comme abs ne semble pas être l'une des fonctions intégrées de NSPredicate. C'est plutôt une fonction dans NSExpression. J'en déduis que nous pouvons utiliser n'importe quelle expression NSExpression dans la partie format NSPredicate. –

+0

Si vous regardez la définition BNF pour les prédicats Cocoa (https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pBNF.html), vous verrez que vous pouvez utiliser un ensemble des fonctions à l'intérieur de la chaîne de prédicat (somme, nombre, min, max, moyenne, médiane, mode, stddev, tri, log, ln, exp, plancher, plafond, abs, trunc, aléatoire, aléatoire, maintenant) –