Objective c 使用NSExpression查找指数值?

Objective c 使用NSExpression查找指数值?,objective-c,ios,expression,Objective C,Ios,Expression,我尝试使用NSExpression计算指数值,如下所示: NSNumber *number1 = [NSNumber numberWithInteger:2]; NSNumber *number2 = [NSNumber numberWithInteger:4]; NSArray *arrNum=[NSArray arrayWithObjects:number1,number2,nil]; NSExpression *arrayExpression = [NSExpressio

我尝试使用
NSExpression
计算指数值,如下所示:

NSNumber *number1 = [NSNumber numberWithInteger:2];        
NSNumber *number2 = [NSNumber numberWithInteger:4];

NSArray *arrNum=[NSArray arrayWithObjects:number1,number2,nil];
NSExpression *arrayExpression = [NSExpression expressionForConstantValue: arrNum];

NSArray *arrExp=[NSArray arrayWithObject:arrayExpression]; 

NSExpression* expression =[NSExpression expressionForFunction:@"raise:toPower:" arguments:arrExp];

NSLog(@"powerExp:%@",expression);

int  resultSum = [[expression expressionValueWithObject:nil context: nil] intValue];

NSLog(@"resultnum:%f",resultSum);
我得到了一个错误:

-[\uuu NSArrayI doubleValue]:发送到实例0x7439e60的无法识别的选择器 2012-10-22 16:04:04.034运算符[3958:c07]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\uu NSArrayI doubleValue]:未识别的选择器发送到实例0x7439e60'


expressionForConstantValue:
采用
NSNumber
。您向它传递了一个
NSNumber
NSArray


exp:
函数接受单个数字(n)并返回e^n。这就是你想做的吗?或者您是想使用
raise:toPower:
,它接受两个值吗?

expressionForConstantValue:
接受一个
NSNumber
。您向它传递了一个
NSNumber
NSArray

NSNumber *number1 = [NSNumber numberWithInteger:2];
NSNumber *number2 = [NSNumber numberWithInteger:4];

NSExpression *expr1 = [NSExpression expressionForConstantValue:number1];
NSExpression *expr2 = [NSExpression expressionForConstantValue:number2];

NSArray *exprArgs = [NSArray arrayWithObjects:expr1, expr2, nil];

NSExpression *expression = [NSExpression expressionForFunction:@"raise:toPower:" arguments:exprArgs];
NSLog(@"powerExp:%@",expression);

int resultSum = [[expression expressionValueWithObject:nil context: nil] intValue];
NSLog(@"resultnum:%d",resultSum);
exp:
函数接受单个数字(n)并返回e^n。这就是你想做的吗?或者您的意思是使用
raise:toPower:
,它需要两个值

NSNumber *number1 = [NSNumber numberWithInteger:2];
NSNumber *number2 = [NSNumber numberWithInteger:4];

NSExpression *expr1 = [NSExpression expressionForConstantValue:number1];
NSExpression *expr2 = [NSExpression expressionForConstantValue:number2];

NSArray *exprArgs = [NSArray arrayWithObjects:expr1, expr2, nil];

NSExpression *expression = [NSExpression expressionForFunction:@"raise:toPower:" arguments:exprArgs];
NSLog(@"powerExp:%@",expression);

int resultSum = [[expression expressionValueWithObject:nil context: nil] intValue];
NSLog(@"resultnum:%d",resultSum);
输出:

powerExp:2 ** 4
resultnum:16
输出:

powerExp:2 ** 4
resultnum:16

我更新了我的问题以提出:toPower:但出现了相同的错误。
expressionForConstantValue:
仍然采用单个
NSNumber
,而不是
NSArray
。我更新了我的问题以提出:toPower:但出现了相同的错误。
expressionForConstantValue:
仍然采用单个
NSNumber
,不是
NSArray
@sayalSnaking:改变问题(特别是在你得到答案后)是个坏主意。没有人会理解你第一个问题的答案如果你有一个新的问题,那么发布一个新的问题!我将回滚您的更改。由于我的问题已关闭,我无法提问,因此只能编辑此问题。NSString*strCal=[NSString stringWithFormat:@”((%d%@)%@)%@),数字,strMinus,strDivide,strMultiple];NSExpression*exp=[NSExpression expressionWithFormat:strCal];浮点结果=[[exp expressionValueWithObject:nil上下文:nil]floatValue];NSLog(@“结果:%f”,结果);strCal的打印说明:((28-18)/87)*100预期输出应为11.49,但我得到的结果为0。0000@sayalSnaking:改变问题(特别是在你得到答案后)是个坏主意。没有人会理解你第一个问题的答案如果你有一个新的问题,那么发布一个新的问题!我将回滚您的更改。由于我的问题已关闭,我无法提问,因此只能编辑此问题。NSString*strCal=[NSString stringWithFormat:@”((%d%@)%@)%@),数字,strMinus,strDivide,strMultiple];NSExpression*exp=[NSExpression expressionWithFormat:strCal];浮点结果=[[exp expressionValueWithObject:nil上下文:nil]floatValue];NSLog(@“结果:%f”,结果);strCal的打印说明:((28-18)/87)*100预期输出应为11.49,但我得到的结果为0.0000