美文网首页
iOS - NSExpression 的用法

iOS - NSExpression 的用法

作者: Mitchell | 来源:发表于2015-10-26 00:25 被阅读1963次

    一、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 <Foundation/Foundation.h>
    @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 的用法

          本文链接:https://www.haomeiwen.com/subject/dihxhttx.html