zoukankan      html  css  js  c++  java
  • 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);
    

    打印结果

    打印结果

  • 相关阅读:
    LOG4J介绍
    基于AspectJ的XML方式进行AOP开发
    tsdb import 相关
    xming + putty remote GUI
    html5 编辑
    swift container server 莫名stuck
    rsyslog trouble shooting
    文件处理 字符串处理
    list去掉重复元素
    找到字符串中最长的回文
  • 原文地址:https://www.cnblogs.com/lancely/p/5782793.html
Copyright © 2011-2022 走看看