2012-10-22 3 views
1

나는 아래와 같은 NSExpression를 사용하여 지수 값을 계산하려합니다 : 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]: unrecognized selector sent to instance 0x7439e60 2012-10-22 16:04:04.034 operator[3958:c07] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI doubleValue]: unrecognized selector sent to instance 0x7439e60'

답변

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 
+0

감사합니다 ..... 결과가 – SnakingPrabhu

+0

입니다. 내 질문이 업데이트되었습니다. – SnakingPrabhu

+0

@sayalSnaking : 질문을 변경하면 (특히 답변을 얻은 후에) 나쁜 생각입니다. 아무도 당신의 첫 번째 질문에 주어진 대답을 이해하지 못할 것입니다. - 새로운 문제가있는 경우 새로운 질문을 게시하십시오! 나는 당신의 변화를 롤백 할 것입니다. –

0

expressionForConstantValue:NSNumber 걸립니다. NSArray이 (가) NSNumber입니다.

exp: 함수는 단일 숫자 (n)를 취해 e^n을 반환합니다. 그게 당신이하려는 일 이니? 아니면 두 개의 값을 취하는 raise:toPower:을 사용하셨습니까?

+0

야시 사용 인상 : toPower : – SnakingPrabhu

+1

올리는 내 질문에 업데이트 된 건가요 : toPower을 :하지만 같은 오류가왔다. – SnakingPrabhu

+0

'expressionForConstantValue :'는 여전히 NSArray가 아닌 하나의 NSNumber를 사용합니다. –

관련 문제