Kin*_*Kin 1 string math xcode equation type-conversion
我想问一下如何将用户插入的字符串转换为数学公式,以便xCode理解.
例如,如果用户将其输入到文本字段."2*sin(2*M_PI*t)",其中等式中的"t"是代码内的变量,Xcode可以理解方程式
double answer = 2*sin(2*M_PI*t);
非常感谢Kin
你可以只使用标准的cocoa类来完成它,但语法有点荒谬,而且设置的数量也是惊人的.
@interface MyExprTest : NSObject
-(void)run;
@end
@implementation MyExprTest
-(void)run {
NSExpression *e = [(NSComparisonPredicate *)[NSPredicate
predicateWithFormat:@"2*FUNCTION(2*PI*$t,'sin')==0"]
leftExpression];
NSMutableDictionary *vars = [NSMutableDictionary
dictionaryWithObjectsAndKeys:
[NSNumber numberWithDouble:0.04], @"t",
nil];
NSLog(@"%@", [e expressionValueWithObject:self context:vars]);
}
-(double)PI {
return M_PI;
}
@end
@interface NSNumber (Trigonometry)
- (NSNumber*)sin;
@end
@implementation NSNumber (Trigonometry)
- (NSNumber*) sin {
double result = sin([self doubleValue]);
return [NSNumber numberWithDouble:result];
}
@end
int main (int argc, const char * argv[]) {
MyExprTest *t = [[MyExprTest alloc] init];
[t run];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
一些注意事项:
t你的表情变得$t让你可以从引用它vars的字典M_PI简直就成了PI; 请注意添加的方法来支持它FUNCTION和一个类别来解决它.