zoukankan      html  css  js  c++  java
  • valueForKeyPath常用用法

    valueForKeyPath和valueForKey有一些类似,但也有一些不同的地方。这里就简单说一下valueForKeyPath一些不同的地方。
    
    举例来说:
    1、valueForKeyPath可以获取数组中的最小值、最大值、平均值、求和。代码如下: + (NSString *)caculateArray:(NSArray *)array { CGFloat sum = [[array valueForKeyPath:@"@sum.floatValue"] floatValue]; CGFloat avg = [[array valueForKeyPath:@"@avg.floatValue"] floatValue]; CGFloat max =[[array valueForKeyPath:@"@max.floatValue"] floatValue]; CGFloat min =[[array valueForKeyPath:@"@min.floatValue"] floatValue]; NSLog(@"%fn%fn%fn%f",sum,avg,max,min); return [NSString stringWithFormat:@"%f",sum]; }

       self.dataSource = @[

    @{@"value":@"200",@"name":@"xiaoer",@"city":@"chengdu"},

    @{@"value":@"700",@"name":@"xiaosan",@"city":@"shanghai"},

    @{@"value":@"600",@"name":@"xiaosi",@"city":@"beijing"}

    ];

       CGFloat total = [[self.dataSource valueForKeyPath:@"@sum.value"] floatValue];

    
    
    2、valueForKeyPath可以获取数组中相同key的元素
    如下所示:
    NSArray *arr = @[@{@"city":@"beijing",@"person":@{@"name":@"zhangsan"}},@{@"city":@"chengdu"}];
    [arr valueForKeyPath:@"city"] 可以获取到city数组 @[@"beijing",@"chengdu"]
     
    3.valueForKeyPath 可以使用. 来一层一层向下索引,充当路径。当多个字典层级时,取子层级中的属性就非常简单了
    NSDictionary *dict1 = @{@"dic1":@{@"dic2":@{@"name":@"lisi",@"info":@{@"age":@"12"}}}};
    id res = [dict1 valueForKeyPath:@"dict1.dict2.name"];
    
    
  • 相关阅读:
    比较实用的断点调试技巧
    objc非主流代码技巧
    0代码ViewController
    xib的动态桥接
    ios中集合遍历方法的比较和技巧
    再见了NSLog
    Reactive Cocoa Tutorial [4] = 只取所需的Filters
    objc@interface的设计哲学与设计技巧
    ARC下dealloc过程及.cxx_destruct的探究
    Reactive Cocoa Tutorial [3] = "RACSignal的巧克力工厂“;
  • 原文地址:https://www.cnblogs.com/OIMM/p/9304434.html
Copyright © 2011-2022 走看看