KVC的简单用法

KVC是给对象的成员变量赋值和拿到成员变量的值得另一种方式(也可通过调用set方法和get方法实现)

创建一个学生类,在头文件中声明几个属性

@property(nonatomic, copy) NSString * name;//姓名
@property(nonatomic, copy) NSString * sex;//性别
@property(nonatomic, assign) float face;//颜值

在回到ViewController.m中

通过key-path的方式给属性赋值

// 创建一个学生对象stu
[stu setValue:@"老王" forKey:@"name"];
[stu setValue:@"男" forKey:@"sex"];
[stu setValue:@"99" forKey:@"face"]

注:通过KVC的方式去操作成员变量的时候,key值要与属性名保持一致。否则会导致崩溃,但是这个崩溃是可以解决的
解决因为KVC的key值和属性名不一致而造成的崩溃问题
a.赋值的时候key值和属性不一样:
重写setValue:forUnderfineKey:方法
b.获取值得时候,key值和属性名不一样:
重写valueForUndefinedKey:方法

在学生类的.m文件中重写

//1.重写这个方法可以避免因为调用KVC的方法给成员变量赋值的时候,因为key写错而造成的崩溃问题
//2.将指定的key对应的值,赋给另外一个key对应的值(一般用在通过字典给属性赋值的时候)
//参数1:给写错的key对应的成员变量赋的值
//参数2:写错的key值
- (void)setValue:(id)value forUndefinedKey:(NSString *)key{
}
//返回值:重新指定因为key错误而找不到返回值的方法的新的返回值(给valueForKey:方法返回一个新的返回值)
//参数:错误的key值
- (id)valueForUndefinedKey:(NSString *)key{
    return [NSString stringWithFormat:@"%@错误!!!", key];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    黑暗中的孤影阅读 50,059评论 74 441
  • KVC(Key-value coding)键值编码,iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,...
    CALayer_Sai阅读 2,562评论 0 4
  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    Fendouzhe阅读 694评论 0 6
  • KVC简单介绍 KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过Key...
    公子无礼阅读 1,438评论 0 6
  • 转自:http://www.jianshu.com/p/dd355fbfa029kvc不经常使用,可能会忘记。转载...
    BetterComingDay阅读 748评论 0 1