码迷,mamicode.com
首页 > 其他好文 > 详细

KVC

时间:2015-12-21 23:18:23      阅读: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!