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];