• iOS-使用KVC的聚合运算


    KVC支持的聚合运算

    • sum 求和
    • max 最大值
    • min 最小值
    • avg 平均值
    • count 数量

    使用方法

    新建一个类Person,里面存放一个属性age

    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    
    /** 年龄 */
    @property (nonatomic, assign) NSUInteger age;
    
    @end
    

    创建一个数组,存放Person对象

    NSMutableArray<Person *> *persons = [NSMutableArray array];
    for (int i = 1; i <= 5; i++) {
        Person *p = [[Person alloc] init];
        p.age = i;
        [persons addObject:p];
    }
    

    使用@sum @min @max @avg @count进行聚合运算

    NSInteger sum = [[persons valueForKeyPath:@"@sum.age"] integerValue];
    NSInteger min = [[persons valueForKeyPath:@"@min.age"] integerValue];
    NSInteger max = [[persons valueForKeyPath:@"@max.age"] integerValue];
    float avg = [[persons valueForKeyPath:@"@avg.age"] floatValue];
    NSInteger count = [[persons valueForKeyPath:@"@count.age"] integerValue];
    
    NSLog(@"sum=%zd", sum);
    NSLog(@"min=%zd", min);
    NSLog(@"max=%zd", max);
    NSLog(@"avg=%g", avg);
    NSLog(@"count=%zd", count);
    

    打印结果

    打印结果

    数组中直接存放数值的情况

    直接使用@运算符.floatValue

    NSArray<NSNumber *> *arr = @[@1, @2, @3, @4];
    NSNumber *avg = [arr valueForKeyPath:@"@avg.floatValue"];
    NSNumber *sum = [arr valueForKeyPath:@"@sum.integerValue"];
    NSLog(@"avg=%@", avg);
    NSLog(@"sum=%@", sum);
    

    打印结果

    打印结果

  • 相关阅读:
    1208PHP基础
    数据库的查询
    1108 函数
    Shell脚本监控Linux某个后台进程,当进程死掉后重新启动服务,以httpd为例
    Windows下安装Zabbix agent
    Zabbix4.0如何监控Windows主机
    yum下载Zabbix4.0失败的解决方法
    TCP的三次握手与四次挥手理解
    MySQL主从复制原理
    Awk
  • 原文地址:https://www.cnblogs.com/lancely/p/5782793.html
Copyright © 2020-2023  润新知