前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kvc简单实现

kvc简单实现

作者头像
用户1219438
发布2018-02-01 11:46:07
6520
发布2018-02-01 11:46:07
举报
文章被收录于专栏:AliceAlice

除了一般的赋值和取值的方法,我们还可以用Key-Value-Coding(KVC)键值编码来访问你要存取的类的属性

kvc: kvc    key value coding 键值对编码

可以通过 【实体类1 setValue:值 forKey:键】 来给实体类赋值

假如 实体类1的属性中还包含了一个实体类1  想要在改变类属性的值  可以通过【实体类1 setValue:值 forKeyPath:键】 

下边就是详细的实现的过程

分为2部分

1 通过 setValue: forKey  给实体类加上属性的值

首先在Person.h文件中创建出属性

代码语言:js
复制
{
     NSString *_name;
    NSInteger _age;
}

采用这种方式 想说的是这个属性是受保护的但是在viewController中通过这种方法 仍然可以改变他的值 当然 通过属性创建更能够改变啦。

还有就是需要重写 描述方法 方便输出

然后就是ViewController.m中的实现

代码语言:js
复制
 //创建一个person对象
 Person *person = [[Person alloc]init];
    [person setValue:@"zhangsan" forKey:@"_name"];
    [person setValue:@12 forKey:@"_age"];
    NSLog(@"%@",person);

能够看到成功赋值

2 给person添加一个自身的类属性

代码语言:js
复制
{
     NSString *_name;
     NSInteger _age;
     Person *_wife;
}
Viewcontroller.m
- (void)viewDidLoad {
     [super viewDidLoad];
     //创建一个person对象
     Person *person = [[Person alloc]init];
     [person setValue:@"zhangsan" forKey:@"_name"];
     [person setValue:@12 forKey:@"_age"];
 
     //创建出另一个表示wife的person对象 并设置值
     Person *wife = [[Person alloc]init];
     [wife setValue:@"linda" forKey:@"_name"];
     [wife setValue:@12 forKey:@"_age"];
 
     //将设置好的wife当做值加入到person的_wife属性中
     [person setValue:wife  forKey:@"_wife"];
 
     //将wife的名字年龄做更改
    [person setValue:@"lisi" forKeyPath:@"_wife._name"];
     [person setValue:@20 forKeyPath:@"_wife._age"];
 
     NSLog(@"%@",person);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-10-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档