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

    valueForKeyPath和valueForKey有一些类似,但也有一些不同的地方。这里就简单说一下valueForKeyPath一些不同的地方。

    valueForKeyPath可以深层索引所有key为id的元素   
    valueForKey只是一层索引

    举例来说:

    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];
    }
    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"];
    //res = lisi
    上面就有一些我用到的valueForKeyPath的用法
  • 相关阅读:
    二叉搜索树与双向链表
    复杂链表的复制
    二叉树中和为某一值的路径
    二叉树的后序遍历
    从上往下打印二叉树
    栈的压入,弹出序列
    包含min函数的栈
    JS基础知识
    有序列表、无序列表、网页的格式和布局
    样式表(宽度和高度、背景字体、对齐方式边界与边框)
  • 原文地址:https://www.cnblogs.com/tangyuanby2/p/8066267.html
Copyright © 2011-2022 走看看