gpt4 book ai didi

ios - objective-c -检查NSString是否可计算

转载 作者:行者123 更新时间:2023-12-01 17:30:26 25 4
gpt4 key购买 nike

我正在用Objective C用Xcode编写一个计算器进行学习(我是初学者。)。这尤其是我正在使用的代码(用于计算NSString)。

- (IBAction)resultButtonPressed:(id)sender {

NSExpression *expression = [NSExpression expressionWithFormat:label_result.text];

label_result.text = [NSString stringWithFormat:@"%@", [expression expressionValueWithObject:nil context:nil]];

}

问题是,每当用户键入“6(5 + 1)”而不是“6 *(5 + 1)”之类的“无法发音”的东西时,程序崩溃,我得到的是:
2014-11-01 02:36:10.577 The Calculator[1515:575020] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "6(5+1) == 1"'
*** First throw call stack:
(0x18672de48 0x196e280e4 0x18753ad98 0x187538e2c 0x18764b128 0x18764b0c4 0x100062244 0x18af110f8 0x18aefa22c 0x18af10a94 0x18af10720 0x18af09c74 0x18aedd38c 0x18b17c1b4 0x18aedb8f4 0x1866e60e8 0x1866e538c 0x1866e343c 0x1866111f4 0x18f7a75a4 0x18af42784 0x10006286c 0x197496a08)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)

因此,在过去的半个小时中,我一直在寻找一种方法/函数,该方法/函数可让您 首先检查 NSString是否可计算,以便我可以(如有必要)创建警告标签或类似内容,但是我没有找不到一个。有谁可以帮助我吗?

谢谢!

最佳答案

试试看!

@try {
NSExpression *expression = [NSExpression expressionWithFormat:label_result.text];
label_result.text = [NSString stringWithFormat:@"%@", [expression expressionValueWithObject:nil context:nil]];
} @catch (NSException *exception) {
if ([[exception name] isEqualToString:NSInvalidArgumentException]) {
label_result.text = @"Invalid Expression";
}

注意:在Cocoa中实际上不建议尝试类似的尝试/捕获异常。异常应用于意外错误。
您也可以像这样 https://github.com/davedelong/DDMathParser使用数学解析器。
对不起,我的英语,我是法语。

关于ios - objective-c -检查NSString是否可计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26685531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com