Objective-C计算字符串值

Dan*_*i A 2 int objective-c nslog nsstring

这是我的主要内容:

int x=0;
NSString *new=[[NSString alloc]initWithString:@"9+4"];
x=[new intValue];
NSLog(@"hi %i",x);
Run Code Online (Sandbox Code Playgroud)

这导致9 ...因为赋予字符串的intValue将只读取数字并在字符不是数字时停止.

那么如何打印我的字符串的结果并得到一个13而不是?

Ric*_*III 8

实际上,这NSExpression是为了这个:

NSExpression *expression = [NSExpression expressionWithFormat:@"9+4"];
// result is a NSNumber
id result = [expression expressionValueWithObject:nil context:nil];

NSLog(@"%@", result);
Run Code Online (Sandbox Code Playgroud)

NSExpression是非常强大的,我建议你阅读它.您可以通过格式字符串传入对象来使用变量.