1

以下のように指数値を計算しようとしてい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);

エラーが発生しました:

-[__ NSArrayI doubleValue]:認識されないセレクターがインスタンス0x7439e60に送信されました2012-10-22 16:04:04.034 operator [3958:c07] *キャッチされない例外'NSInvalidArgumentException'、理由:'-[__ NSArrayI doubleValue]:認識されないセレクターのためにアプリを終了しますインスタンス0x7439e60に送信されました '

4

2 に答える 2

1
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
于 2012-10-24T10:41:57.197 に答える
0

expressionForConstantValue:かかりますNSNumberNSArrayのを渡しましたNSNumber

このexp:関数は単一の数値 (n) を取り、e^n を返します。それがあなたがやろうとしていることですか?それともraise:toPower:、2 つの値を取る を使用するつもりでしたか?

于 2012-10-22T12:15:12.973 に答える