Как использовать оператор модуля с NSExpression?

Как использовать оператор модуля с NSExpression? Если я использую

NSExpression *exp = [NSExpression expressionWithFormat:@"3%2"];

Я получаю сообщение об ошибке - *** Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: "Невозможно проанализировать строку формата"3%2 == 1"".

Может кто-нибудь объяснить, как правильно использовать оператор модуля с NSExpression? Пример был бы великолепен!

2 ответа

Ты можешь использовать +[NSExpression expressionForFunction:arguments:], как предлагает @Sean McDonald, или, если вы найдете это слишком многословным, вы можете использовать синтаксис для предопределенной функции в строке формата:

NSExpression *exp = [NSExpression expressionWithFormat:@"modulus:by:(3, 2)"];

NSExpression имеет функцию для математических уравнений, таких как модуль. Вот пример того, как вы будете выполнять уравнение, которое вы просили:

NSExpression *expression = [NSExpression expressionForFunction:@"modulus:by:" arguments:@[[NSExpression expressionForConstantValue:@3], [NSExpression expressionForConstantValue:@2]]];

id value = [expression expressionValueWithObject:nil context:nil];

NSLog(@"%@", value); // Output is 1

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

Другие вопросы по тегам