KVC

除了一般的赋值方法和取值方法之外,借助于键值编码,你还可以用一些标准的存取器方法来访问类的特性。通过指定表示你要访问的属性名的字符串标识符,可以使用这些存取器方法获取或设置的属性。除了使用字符串标识符访问类的特性外,你还可以使用标准化的语法获取对象关系和子类对象。

之前我们介绍过如何给一个指定类的特性定义属性,Objective-C为每个属性提供了赋值方法和取值方法。除了标准的赋值方法和取值方法外, 还提供了一套键值编码存取器方法。

键值编码存取器方法中最常用的是用于直接访问指定特性的方法。-valueForKey:可以通过指定一个参数来读取特性,该参数用字符串表示你要访问的特性名。-setValueForkey:用于设置一个给定特性的值,也需要指定字符串作为特性名。在处理复杂的关系时,比如,访问一个特性的特性,你就需要使用点标记指定一个更复杂的键路径。那么可以使用方法-valueForkeyPath:指定点标记路径。此外还有一个-setValue:forKeyPath:方法。

键值路径中使用函数

[anArrayOfProucts valueForPath:@“@avg.price”];

[anArrayOfProucts valueForPath:@“@sum.price”];

[store valueForKeyPath:@“products.@count”];

函数只能在对象数组和对象集合上使用。在本例中,前两行代码访问产品对象集。这些产品有价格和成本等特性。给定的函数接受数组中的每一个对象的指定特性值,在这些值上调用指定的函数。换句话说,第一行代码的作用就是遍历产品数组中的每一个元素,收集其中的每个对象价格属性,然后求平均值。

使用这些函数的语法就是,以@前缀开头,后面接函数名,一个“.”符号以及要操作的属性。@count函数例外,不必为其指定特性,因为该函数只是简单返回一个集合中的元素个数。

@agv 返回数组或者集合中的所有元素的平均值

@count 返回数组或者集合中元素的个数

@max 返回数组或者集合中所有元素最大的值

@min 返回数组或者集合中所有元素最小的值

@sum 返回数组或者集合中所有元素的总和

 

(来自:学好objecti-c)

posted @ 2015-04-12 17:26  偏未晚  阅读(170)  评论(0编辑  收藏  举报