首页 > 其他 > 详细

KVC

时间:2015-12-21 23:16:00      阅读:263      评论:0      收藏:0      [点我收藏+]

当一个类中定义一个实例变量时,没有给实例变量提供限时属性(默认是protected),而且在声明和实现文件中也没有给这个实例变量

设置getter和setter的方法。

那么一般情况下这个实例变量是不能被赋值和得到的。

但是KVC可以通过setValue方法给类名赋值并且提取出来;

假设 _name为student类中的实例变量,并且没有提供getter和setter方法

student *stu = [student alloc]init];                     //给stu实例对象分配并且初始化

[stu setValue:@"kyrie" forKey;@"_name"];         //给stu实例对象中名字叫做_name的实例变量进行赋值赋值为(kyrie)

NSString *mingzi = [stu valueForKey:@"_name"];//通过valueForKey方法提取出_name中的值赋值给mingzi

NSlog(@"%@",mingzi);

最后输出结果为kyrie。

2、如果访问这个类里中的属性中的属性呢?那就用到了键路径 

setValue:<#(id)#> forKeyPath:<#(NSString *)#>

属性中的属性使用点

例如,student继承NSObject 而Cstudent继承student 

student{

NSStirng * number;

}

Cstudent

{

number * classnumber;

}

那么键路径使用方法就是number.classnumber.

基本使用方法跟上面的方法一致。

[student setValue:@"数学课" forKeyPath:@"course.CourseName"];
        courseName = [student valueForKeyPath:@"course.CourseName"];
        NSLog(@"课程名称:%@", courseName);
        

KVC

原文:http://www.cnblogs.com/naizui/p/5065045.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!