美文网首页
valueForKeyPath的使用

valueForKeyPath的使用

作者: 十年祤茉 | 来源:发表于2018-05-02 15:37 被阅读19次

    valueForKeyPath和valueForKey有一些类似,但也有一些不同的地方。这里就简单说一下valueForKeyPath一些不同的地方。
    1、valueForKeyPath可以获取数组中的最小值、最大值、平均值、求和。代码如下:

    NSArray *testArray = [NSArray arrayWithObjects:@"2.0", @"2.3", @"3.0", @"4.0", nil];
    NSNumber *sum = [testArray valueForKeyPath:@"@sum.floatValue"];
    NSNumber *avg = [testArray valueForKeyPath:@"@avg.floatValue"];
    NSNumber *max = [testArray valueForKeyPath:@"@max.floatValue"];
    NSNumber *min = [testArray valueForKeyPath:@"@min.floatValue"];
    

    在检索NSArray的时候,通常可以利用循环把里面的对象一个一个比较找出目标。另外也可以通过Key-Value的方法找出对象。

    例如有下面这么一个Array:
    (
    {
    city = “Beijing”;
    country = “China”;
    },
    {
    city = “Tokyo”;
    country = “Japan”;
    },
    {
    city = “New York”;
    country = “U.S.”;
    }
    )
    

    通常可以通过循环来找出对象,如下:

        NSDictionary *tmpDic = [NSDictionary dictionary];
        for (tmpDic in Array) {
            if ([[tmpDic objectForKey:@"city"] isEqualToString:@"Beijing"]) {
                // ....code...
                break;
            }
        }
    

    也可以通过key-value的方法来搜索:

     NSArray *allCity = [array valueForKeyPath:@"city"];
    

    allCity的结果是:

    (
    “Beijing”,
    “Tokyo”,
    “New York”
    )
    

    然后利用如下的代码获取array的index:

    NSInteger index = [allCity indexOfObject:@"tokyo"];
    

    然后用取得的index获取对象就可以:

    NSString *city = [allCity objectAtIndex:index];
    

    相关文章

      网友评论

          本文标题:valueForKeyPath的使用

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