IOS中Key-Value Coding (KVC)的使用详解(烟台杰瑞教育IOS培训部原创)_第1页
IOS中Key-Value Coding (KVC)的使用详解(烟台杰瑞教育IOS培训部原创)_第2页
IOS中Key-Value Coding (KVC)的使用详解(烟台杰瑞教育IOS培训部原创)_第3页
IOS中Key-Value Coding (KVC)的使用详解(烟台杰瑞教育IOS培训部原创)_第4页
IOS中Key-Value Coding (KVC)的使用详解(烟台杰瑞教育IOS培训部原创)_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、最新IOS中Key-Value Coding (KVC)的使用详解(烟台杰瑞教育IOS培训部原创)IOS中Key-Value Coding (KVC)的使用详解kvc,键值编码,是一个非正式的协议,它提供一种机制来间接访问对象的属性。直接访问对象是通过调用访问器的方法实现,而kvc不需要调用访问器的设置和获取方法,可以直接访问对象的属性。下面介绍一下kvc的用法:1、对属性赋值kvc是通过键值对的方式对属性设置值,提供了下面的方法,相当于访问器中的set方法。value为要设置的值,key是字符串,字符串中内容为为属性的名称- (void)setValue:(id)value forKey:(

2、NSString *)key;- (void)setValue:(id)value forKeyPath:(NSString *)keyPath;下面通过一个小例子讲解一下通过访问器和kvc对属性赋值的代码实现。假设Student类中有一个name属性,直接对name赋值的方式为:Student *stu = Student alloc init; = jerehedu;通过kvo对name进行赋值:Student *stu = Student alloc init;stu setValue:jerehedu forKey:name;假设学生类中还有一个属性为ClassInfo

3、班级类的对象stuClass,在ClassInfo班级类中有个classNo班级号的属性,下面通过直接的方式设置班级号:stu.stuClass = ClassInfo new; = 1;通过kvc设置班级号:stu.stuClass = ClassInfo new;stu setValue:(1) forKeyPath:stuClass.classNo;通过keyPath设置时,路径由 xx.xx 表示;value的值为OC对象,如果为根本数据类型,需要进行装箱,也就是包装为OC对象;2、获取属性的值kvc提供了获取对象属性值的方法,相当于访问器的get方法,取值的时候也是通过键值对方式。-

4、 (id)valueForKey:(NSString *)key;- (id)valueForKeyPath:(NSString *)keyPath;下面通过一个小例子讲解一下通过访问器和kvc对属性取值的代码实现。假设要获取Student类中name的值,直接对name取值的方式为:NSString *name = ;通过kvc取值的方式为:NSString *name = stu valueForKey:name;通过访问器方法直接从Student类中取班级号:int num = ;通过kvc取Student类中中班级号:int num = stu valueForKeyP

5、ath:stuClass.classNo intValue;默认取到的值为OC对象,如果想得到根本数据类型,需要进行拆箱操作。3、key找不到时,处理异常使用kvc时,如果代码中的key值不存在,会抛出异常,可以在类中通过重写它提供下面的这个方法来解决这个问题。- (void)setValue:(id)value forUndefinedKey:(NSString *)key;当key不存在时,会自动调用上面的这个方法,可以在这个方法中进行处理。4、kvc的用法补充kvc非常好用,可以简化我们的代码,除了可以不用通过访问器方法,直接对属性进行访问外,还可以对对象中的属性进行运算。比方新添加一个

6、Test测试类,里面有一个score分数的属性,在Student类中有一个数组,数组中存放考试信息Test类对象,通过kvo可以直接得到数组中存储的所有考试的平均成绩、最好成绩等。通过kvo存储考试数组信息: NSMutableArray *ary = NSMutableArray array; for (int i=0; i5; i+) Test *test = Test alloc init; test setValue:(100-10*i) forKey:score; ary addObject:test; stu.testAry = ary;在Student类中将考试信息打印输出:NS

7、Log(show: testAry = % ,self valueForKey:testAry); NSLog(show: testAry.score = %,self.testAry valueForKey:score ); NSLog(show: testAry.score = %,self.testAry valueForKeyPath:score ); NSLog(show: 数组中总成绩SUMscore = %,self.testAry valueForKeyPath:sum.score ); NSLog(show2: 数组中平均成绩AVGscore = %,self.testAry valueForKeyPath:avg.score ); NSLog(show2: 数组中最大成绩MAXscore = %,sel

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论