2012-02-26 66 views
0

我搜索了整个互联网,但找不到任何有关如何在NSPredicate中使用NSExpression的好解释。我知道我的谓词需要内置函数abs。我有这个谓词:如何使用NSExpression与NSPredicate

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

我需要hg- [txtInput.text floatValue]部分的绝对值。我如何实现它?

回答

2

添加abs()周围的表达你希望你的谓语字符串

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

感谢大卫体内部的绝对价值。当我看到它工作时,我感到非常惊讶,因为abs似乎不是NSPredicate的功能之一。它相当于NSExpression中的一个函数。从这我推断我们可以在NSPredicate字符串格式部分使用任何NSExpression表达式。 – 2012-02-27 06:25:24

+0

如果你看看Cocoa谓词的BNF定义(https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pBNF.html),你会看到你可以使用一组谓词字符串中的函数(sum,count,min,max,average,median,mode,stddev,sort,log,ln,exp,floor,ceiling,abs,trunc,random,randomn,now) – 2012-02-27 07:09:42