2014-01-24 46 views
0

此代码:逻辑NSExpression评价

NSString* equation = @"2.5*3"; 
NSExpression* expresion = [NSExpression expressionWithFormat:equation, nil]; 
NSNumber* result = [expresion expressionValueWithObject:nil context:nil]; 
NSLog(@"%@", result); // 7.5 

但是这一次不,它在一个NSInvalidArgumentException

NSString* equation = @"2.5<=3"; 
NSExpression* expresion = [NSExpression expressionWithFormat:equation, nil]; 
NSNumber* result = [expresion expressionValueWithObject:nil context:nil]; 
NSLog(@"%@", result); //I wanted result to be 1, as the expression is true 
结束

有谁知道是否有使用NSExpression评价逻辑的方式像那样的表情?

谢谢。

+0

谢谢你,所以我想有没有办法跟NSExpression做... – Odrakir

回答

0

使用NSPredicate代替NSExpression:

NSString* equation = @"2.5<=3"; 
NSPredicate* pre = [NSPredicate predicateWithFormat:equation]; 
BOOL result = [pre evaluateWithObject:nil]; 
NSLog(@"%@", (result ? @"YES" : @"NO"));