除了一般的赋值和取值的方法,我们还可以用Key-Value-Coding(KVC)键值编码来访问你要存取的类的属性
kvc: kvc key value coding 键值对编码
可以通过 【实体类1 setValue:值 forKey:键】 来给实体类赋值
假如 实体类1的属性中还包含了一个实体类1 想要在改变类属性的值 可以通过【实体类1 setValue:值 forKeyPath:键】
下边就是详细的实现的过程
分为2部分
1 通过 setValue: forKey 给实体类加上属性的值
首先在Person.h文件中创建出属性
{
NSString *_name;
NSString *_name;
NSInteger _age;
}
采用这种方式 想说的是这个属性是受保护的但是在viewController中通过这种方法 仍然可以改变他的值 当然 通过属性创建更能够改变啦。
还有就是需要重写 描述方法 方便输出
然后就是ViewController.m中的实现
//创建一个person对象
Person *person = [[Person alloc]init];
Person *person = [[Person alloc]init];
[person setValue:@"zhangsan" forKey:@"_name"];
[person setValue:@12 forKey:@"_age"];
NSLog(@"%@",person);
输出结果:
能够看到成功赋值
2 给person添加一个自身的类属性
{
NSString *_name;
NSInteger _age;
Person *_wife;
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);
[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);
}
输出结果: