全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

IOS 中KVC的使用方法实例详解

IOS 中KVC的使用方法实例详解

KVC是Key Value Coding的缩写,意思是键值编码。在iOS中,提供了一种方法通过使用属性的名称(也就是Key)来间接访问对象的属性方法。说的有的拗口,实际上就是通过类定义我们可以看到类的各种属性,那么使用属性的名称我们就能访问到类实例化后的对象的这个属性值。

      这个方法可以不通过getter/setter方法来访问对象的属性。因为一个类的成员变量如果没有提供getter/setter的话,外界就失去了对这个变量的访问渠道。而KVC则提供了一种访问的方法,这个在某些场合会很有威力。 

      不多说了,上代码:

@interface myPerson : NSObject 
{ 
  NSString *_name; 
  int   _age; 
  int   _height; 
  int   _weight; 
} 
@end 
@interface testViewController : UIViewController 
 
@property (nonatomic, retain) myPerson *testPerson; 
 
@end 
- (void)testKVC 
{ 
  testPerson = [[myPerson alloc] init]; 
   
  NSLog(@"testPerson's init height = %@", [testPerson valueForKey:@"height"]); 
  [testPerson setValue:[NSNumber numberWithInt:168] forKey:@"height"]; 
  NSLog(@"testPerson's height = %@", [testPerson valueForKey:@"height"]); 
} 

        第一段代码是定义了一个myPerson的类,这个类有一个_height的属性,但是没有提供任何getter/setter的访问方法。同时在testViewController这个类里面有一个myPerson的对象指针。 

        当myPerson实例化后,常规来说是无法访问这个对象的_height属性的,不过通过KVC我们做到了,代码就是testKVC这个函数。

        运行之后打印值就是: 

2013-11-02 11:16:21.970 test[408:c07] testPerson's init height = 0
2013-11-02 11:16:21.971 test[408:c07] testPerson's height = 168

    这就说明确实读写了_height属性。 

    KVC的常用方法:

 
- (id)valueForKey:(NSString *)key; 
- (void)setValue:(id)value forKey:(NSString *)key; 

    valueForKey的方法根据key的值读取对象的属性,setValue:forKey:是根据key的值来写对象的属性。 

    这里有几个要强调一下

1. key的值必须正确,如果拼写错误,会出现异常
2. 当key的值是没有定义的,valueForUndefinedKey:这个方法会被调用,如果你自己写了这个方法,key的值出错就会调用到这里来
3. 因为类key反复嵌套,所以有个keyPath的概念,keyPath就是用.号来把一个一个key链接起来,这样就可以根据这个路径访问下去
4. NSArray/NSSet等都支持KVC

 以上就是IOS KVC的使用方法,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# IOS  # KVC  # KVC的使用方法  # KVC实例详解  # iOS 中KVC、KVO、NSNotification、delegate 总结及区别  # 有一个  # 就会  # 有个  # 就能  # 说了  # 如有  # 不多  # 很有  # 你自己  # 这就  # 希望能  # 如果没有  # 可以看到  # 有几个  # 写了  # 谢谢大家  # 键值  # 就可以  # 来写  # 不通过 


相关文章: 网站制作价目表怎么做,珍爱网婚介费用多少?  广州美橙建站如何快速搭建多端合一网站?  如何快速上传建站程序避免常见错误?  建站主机服务器选购指南:轻量应用与VPS配置解析  如何使用Golang安装API文档生成工具_快速生成接口文档  建站之星后台密码遗忘如何找回?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  建站之星伪静态规则如何设置?  如何高效完成独享虚拟主机建站?  建站之星客服服务时间及联系方式如何?  如何通过NAT技术实现内网高效建站?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  高端云建站费用究竟需要多少预算?  如何快速上传自定义模板至建站之星?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  建站之星24小时客服电话如何获取?  建站168自助建站系统:快速模板定制与SEO优化指南  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何快速登录WAP自助建站平台?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  如何快速配置高效服务器建站软件?  如何快速完成中国万网建站详细流程?  如何快速生成橙子建站落地页链接?  如何高效利用亚马逊云主机搭建企业网站?  如何通过老薛主机一键快速建站?  XML的“混合内容”是什么 怎么用DTD或XSD定义  免费网站制作appp,免费制作app哪个平台好?  如何快速搭建高效WAP手机网站吸引移动用户?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  家具网站制作软件,家具厂怎么跑业务?  简历在线制作网站免费版,如何创建个人简历?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  *服务器网站为何频现安全漏洞?  如何挑选高效建站主机与优质域名?  如何获取开源自助建站系统免费下载链接?  定制建站策划方案_专业建站与网站建设方案一站式指南  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  南宁网站建设制作定制,南宁网站建设可以定制吗?  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  如何在阿里云完成域名注册与建站?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  自助网站制作软件,个人如何自助建网站?  建站之星如何保障用户数据免受黑客入侵?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  如何在局域网内绑定自建网站域名? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。