KVC-键值编码是一种间接地访问实例变量的方式

KVC 键值编码是一种间接的访问实例变量的方式[对象 setValue:@“A” forKey:@“name”];

工作原理:    1.先查找该类有没有对应的setName: setter方法.如果有则调用setter方法给实例变量赋值,如果没有,转到第二步:   
2.在查找带下划线的实例变量_name.如果有则给_name赋值,如果没有则转到第三步   
3.最后查找和key值相同的实例变量name,如果有,则给name赋值,如果没有,转到第四步   
4.调用该类的setValue:forUndefinedkey:方法
如果方法没有实现,程序crash.所以一般都先实现一下setValue:forUndefinedkey:可以不写内容,但是必须写

可以用此方法快速给变量赋值

利用先用语法糖创建一个字典

NSDictionary *dic = @{@“name”:@“a”, @“gender”:@“b”, @“age”:@“c”};

[per setValueForKeysWithDictionary:dic];

时间: 2024-10-15 02:16:41

KVC-键值编码是一种间接地访问实例变量的方式的相关文章

KVC - 键值编码

[基本概念] 1.键值编码是一个用于间接访问对象属性的机制,使用该机制不需要调用存取方法和变量实例就可访问对象属性. 2.键值编码方法在OC非正式协议(类目)NSKeyValueCoding中被声明,默认的实现方法由NSObject提供. 3.键值编码支持带有对象值的属性,同时也支持纯数值类型和结构.非对象参数和返回类型会被识别并自动封装/解封. [键值访问] 键值编码中的基本调用包括-valueForKey: 和 -setValue:forkey: 这两个方法,它们以字符串的形式向对象发送消息

Objective-C(十七、KVC键值编码及实例说明)——iOS开发基础

结合之前的学习笔记以及参考<Objective-C编程全解(第三版)>,对Objective-C知识点进行梳理总结.知识点一直在变,只是作为参考,以苹果官方文档为准~ 十七.键值编码 KVC 关于KVC的知识点将通过下列例子来展开说明: Person.h文件,Person类拥有name和age两个成员变量 @interface Person : NSObject { @private NSString *_name; NSInteger _age; } - (void)setAge:(NSIn

关于KVC键值编码

转载自http://www.tuicool.com/articles/2aYfy2 Key-value coding,它是一种使用字符串标识符,间接访问对象属性的机制,而不是直接调用getter 和 setter方法.通常我们使用valueForKey 来替代getter 方法,setValue:forKey来代替setter方法. 首先来看一看KVC与setter,getter方法赋值的区别 Persion *person = [ [Person alloc] init ]; //不使用KVC

Objective-C KVC键值对

KVC键值对是后期在开发项目的时候会经常用到的,如果搞不清楚那个是key,那个是Value,那么就会很吃亏的,我个人是在这方面吃了很多的亏,特别是在做通讯录的时候. 也许刚开始接触的不过是简单的字典,或者是简单的数组,但等到后期遇到字典里包含数组,数组中还有数组,然后在套字典等等,那就SB了. KVC:全拼是(Key-Value-Coding),键值编码. 是一种间接访问实例变量的方法. key:键,用于标识实例变量. Value:值,是实例变量对应的值.下面介绍一下KVC使用的一些方法: 第一

ios中键值编码kvc和键值监听kvo的特性及详解

总结: kvc键值编码  1.就是在oc中可以对属性进行动态读写(以往都是自己赋值属性)           2. 如果方法属性的关键字和需要数据中的关键字相同的话                  3. 动态设置:setValue:属性值 forKey:属性名(用于简单的路径)/setValue:属性值 forKeyPath:属性名(用于复杂的路径)kvo键值监听  永久性的监听item属性值的改变,如果改变就从新设置             1.监听方法:[addObserver:self

IOS开发之旅-KVC【键值编码】

在日常开发中,读取修改对象的属性值时,通常是点调用对应的属性进行相关操作.另外一种方式是通过键值编码,简称KVC,在键值编码中主要使用以下方法 /* Given a key that identifies an attribute or to-one relationship, return the attribute value or the related object. Given a key that identifies a to-many relationship, return a

OC8-属性 KVC是键值编码

1.属性,是oc提供的一种快速的模式化的创建实例变量的方式. (1)属性是通过@property标记的, (2)属性会在背后,默默的帮我们做set和get方法 2.属性做的工作 (1)创建一个实例变量,名字是下划线加属性名, (2)帮我们自动get和setter 的方式,创建一组方法, 3.点语法,点语法是专门为了setter 和getter 方法配备的一种语法糖.会自动根据语法和语境调用是哪一种方法, (1) (.)其实就是转换成了getter 和setter 方法,p.hobby.lengt

KVC(键值编码)(二十五)

kvc的英文全称是key-value-coding,意思就是键值对编码.用普通的话来说,就是kvc就是通过使用键(字符串)来取值的一种编码.是一种间接访问对象属性的机制,不需要调用getter.setter这些存取方法,就可以直接访问对象属性. 我们声明的变量,有可见度.有些私有的,或者受保护的变量,在其他类中,不能直接使用.我们可以通过kvc,用对象在类外部对实例变量进行访问和赋值.不论是什么可见度的实例变量(private,protected,public). setValue: forKe

iOS学习笔记(6)键值编码——KVC

在KVC编程方式中,无论调用setValue:forKey:方法,还是调用valueForKey:方法,都是通过NSString对象来指定被操作属性,其中forKey:标签用户传入属性名的. 对于setValue:属性值[email protected]“name”;代码,底层的执行机制如下. (1)程序优先考虑调用“setName:属性值;”代码通过setter方法完成设置. (2)如果该类没有setName:方法,KVC机制会搜索该类名为_name的成员变量,无论该成员变量是在类接口部分定义