全网整合营销服务商

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

免费咨询热线: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 总结及区别  # 有一个  # 就会  # 有个  # 就能  # 说了  # 如有  # 不多  # 很有  # 你自己  # 这就  # 希望能  # 如果没有  # 可以看到  # 有几个  # 写了  # 谢谢大家  # 键值  # 就可以  # 来写  # 不通过 


相关文章: 如何快速启动建站代理加盟业务?  专业公司网站制作公司,用什么语言做企业网站比较好?  装修招标网站设计制作流程,装修招标流程?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  大连 网站制作,大连天途有线官网?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  盐城做公司网站,江苏电子版退休证办理流程?  利用JavaScript实现拖拽改变元素大小  建站主机与服务器功能差异如何区分?  如何用免费手机建站系统零基础打造专业网站?  网站制作话术技巧,网站推广做的好怎么话术?  如何快速查询网址的建站时间与历史轨迹?  如何生成腾讯云建站专用兑换码?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  建站之星代理平台如何选择最佳方案?  如何通过云梦建站系统实现SEO快速优化?  网页设计网站制作软件,microsoft office哪个可以创建网页?  高端建站如何打造兼具美学与转化的品牌官网?  行程制作网站有哪些,第三方机票电子行程单怎么开?  如何快速搭建高效可靠的建站解决方案?  建站VPS推荐:2025年高性能服务器配置指南  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  如何获取上海专业网站定制建站电话?  建站主机如何安装配置?新手必看操作指南  建站主机数据库如何配置才能提升网站性能?  如何获取开源自助建站系统免费下载链接?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  如何用好域名打造高点击率的自主建站?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  ,有什么在线背英语单词效率比较高的网站?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  平台云上自助建站如何快速打造专业网站?  如何快速搭建虚拟主机网站?新手必看指南  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  详解jQuery停止动画——stop()方法的使用  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  ,南京靠谱的征婚网站?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  实现虚拟支付需哪些建站技术支撑?  网站app免费制作软件,能免费看各大网站视频的手机app?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  css网站制作参考文献有哪些,易聊怎么注册?  如何高效生成建站之星成品网站源码?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  香港服务器租用费用高吗?如何避免常见误区?  C#如何在一个XML文件中查找并替换文本内容  如何高效利用200m空间完成建站? 

您的项目需求

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