valueForKeyPath的使用

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];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    朽木自雕也阅读 1,599评论 6 1
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,671评论 8 265
  • KVC(Key-valuecoding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iOS...
    榕樹頭阅读 729评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,785评论 18 399
  • 相信大多数的人都看过《舌尖上的中国》,不管重播几次,我的口水每次都会泛滥成灾。 《舌尖上的中国》 不光是美食...
    吴星阅读 327评论 0 0