Как использовать оператор модуля с 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.