iOS - NSExpression 的用法


一、NSExpression 干啥的?

  • NSExpression用于表示谓词表达式。比较操作在一个NSPredicate基于两个表达式,由NSExpression类的实例。表达式创建常量值,关键路径,等等。

二、用处

  • 1.评估数学:
NSExpression *expression = [NSExpression expressionWithFormat:@"4 + 5 -2*3"];
    id value = [expression expressionValueWithObject:nil context:nil];
    NSLog(@"%@",value);
  • 2.函数:
     1、统计:
     average:
     sum:
     count:
     min:
     max:
     median:
     mode:
     stddev:
     2、基本运算:
     add:to:
     from:subtract:
     multiply:by:
     divide:by:
     modulus:by:
     abs:
     3、高级运算
     sqrt:
     log:
     ln:
     raise:toPower:
     exp:
     4、边界函数
     ceiling: - (不小于数组中的值的最小积分值)
     trunc: - (最接近但不大于数组中的值的积分值)
     5、与math.h函数类似的函数
     floor:
     6、随机函数
     random
     random:
     7、二进制运算
     bitwiseAnd:with:
     bitwiseOr:with:
     bitwiseXor:with:
     leftshift:by:
     rightshift:by:
     onesComplement:
     8、日期函数
     now
     9、字符串函数
     lowercase:
     uppercase:
     10、空操作
     noindex:
    NSArray*numbers = @[@1,@2,@3,@4,@5,@6];
    NSExpression *expression1 = [NSExpression expressionForFunction:@"now" arguments:@[[NSExpression expressionForConstantValue:numbers]]];
    id value1 = [expression1 expressionValueWithObject:nil context:nil];
    NSLog(@"%@",value1);
  • 3、自定义函数:这个还是很牛逼的
#import 
@interface NSNumber (plus)
 - (NSNumber *)factorial;
@end
#import "NSNumber+plus.h"
@implementation NSNumber (plus)
 -(NSNumber *)factorial{
//    return @(tgamma([self doubleValue] + 1));
    return @(fabs([self doubleValue]+1));
}
@end
#import "ViewController.h"
#import "NSNumber+plus.h"
@interface ViewController ()
@end
@implementation ViewController
 - (void)viewDidLoad {
    [super viewDidLoad];
    //3、自定义函数
    NSExpression *expression2 = [NSExpression expressionWithFormat:@"FUNCTION(100, 'factorial')"];
    id value2 = [expression2 expressionValueWithObject:nil context:nil]; 
    NSLog(@"%@",value2);    
}

你可能感兴趣的:(iOS - NSExpression 的用法)