Предотвратить сбой синтаксической ошибки калькулятора?Xcode - PullRequest
1 голос
/ 16 марта 2012

В настоящее время я делаю калькулятор, который позволяет пользователю вводить желаемую формулу.

Пример.((1 + 1) ** 9) +2)

Это прекрасно работает, я использовал два метода для вычисления этого.

Первый:

    answer = [[NSExpression expressionWithFormat:typeTo.text, nil] expressionValueWithObject:nil context:nil];
    typeTo.text = [NSString stringWithFormat:@"%@", answer];
    answerLabel.text = [NSString stringWithFormat:@"ANS { %@ }", answer];

Второе:

     answer = [GCMathParser evaluate:typeTo.text];

Оба из них вычисляют проблему без затруднений.Но если пользователь вводит:

(1 + 1)) [две скобки]

В обоих случаях происходит сбой.Это один из примеров множества различных синтаксических ошибок.Есть ли способ, как легко это предотвратить?

.

Дополнительная информация: Второй способ ловит ошибку:

#ifdef __COCOA_IMPLEMENTATION__
[NSException raise:@"Error in expression" format:@"error = %s", errStr];
#endif

СПАСИБО: D

1 Ответ

3 голосов
/ 16 марта 2012

Я не использовал ни одного из них, но, основываясь на дополнительной информации, это может вызвать исключение NSEx.

Если это так, вы можете его поймать и обработать.Похоже, что он может отформатировать полезное сообщение о том, с чем не так выраженияк NSError.Если это так, вы можете использовать это.

Также есть DDMathParser, который должен быть современным математическим парсером, и похоже, что он принимает NSError.Может стоит посмотреть.

http://github.com/davedelong/DDMathParser

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...