键值编码(KVC)KEY VALUE CODING

原创 2015年07月08日 19:53:08

1.setValue: forKey:

将person对象中的name属性作为Key值,并将这个Key对应的value设为张三,建立一个键值对

//方法声明:
- (void)setValue:(id)value
          forKey:(NSString *)key
//参数说明:
//由Key标识的属性的值
value:The value for the property identified by key.
key:The name of one of the receiver's properties.
//将person对象中的name属性作为Key值,并将这个Key对应的value设为张三,建立一个键值对
[person setValue:@"张三" forKey:@"name"];

2.valueForKey:

返回调用该方法对象属性的value

//方法声明:
- (id)valueForKey:(NSString *)key
//返回值说明:
//返回调用该方法对象属性的值
NSLog(@"%@", [person valueForKey:@"name"]);

3.setValuesAndKeysForDictionary:

字典中的Key为对象的属性名,value为将要赋的值,组成键值对,并为对象属性赋值

//方法声明:
- (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues
//参数说明:
keyedValues:字典识别用Key标识的属性,通过Key找到相应的属性并将属性赋值
NSDictionary *dictionary = @{@"name" : @"ZSY", @"gender" : @"man", @"age" : @"18", @"hobby" : @"play"};
//在person对象中,通过字典中的Key对应属性名字,将Key对应的属性值赋值为value
[person setValuesForKeysWithDictionary:dictionary];
//注意:如果字典中的Key值多于对象中的属性时,需要重写下面的方法,保证系统正确运行,否则程序crash
- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
}

4.setValue: forKeyPath:

通过路径将属性名(Key)对应值(value)组成键值对,并对属性赋值操作

//方法的声明:
- (void)setValue:(id)value
      forKeyPath:(NSString *)keyPath
//参数说明:
keyPath:要使用Key标记的属性的路径

//Person.h中声明一个Cup对象的属性
@property (nonatomic, retain) Cup *cup;
//Person.m中实现对Cup对象的指定初始化方法
- (instancetype)initWithCup:(Cup *)cup {
    self = [super init];
    if (self) {
        _cup = cup;
    }
    return self;
}
//Cup.h中声明属性capacity
@property (nonatomic, assign) NSInteger capacity; 
//1.实例化Cup对象
Cup *cup = [[Cup alloc] init];
//2.实例化Person对象并且使用初始化方法,为cup属性初始化
Person *person2 = [[Person alloc] initWithCup:cup];
//3.将person对象的cup属性中的capacity属性value值设置为550
[person2 setValue:@550 forKeyPath:@"cup.capacity"];
//4.输出capacity
NSLog(@"%lu", person2.cup.capacity);

Key–Value Coding (KVC 目前看到的最好的解释版本)

Cocoa derives the name of an accessor from a string name at runtime through a mechanism called key–v...
  • chuanyituoku
  • chuanyituoku
  • 2013年11月05日 23:19
  • 1451

【IOS】KVC(Key - value coding 机制) & KVO(键值观察)

键值观察:值更改时通知观察者 键值观察(Key-value observing,或简称 KVO)允许对象观察另一个对象的属性。该属性值改变时,会通知观察对象。它了解新值以及旧值;如果观察的属性为...
  • u013053533
  • u013053533
  • 2014年02月25日 17:40
  • 496

键值编码(KVC)-处理不存在的key和处理nil值

// //  main.m //  处理不存在的key和处理nil值 // //  Created by Goddog on 15/1/3. //  Copyright ...
  • HUXU981598436
  • HUXU981598436
  • 2015年01月03日 16:19
  • 1168

iOS KVC 是怎么通过value查找key的

//联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄 一、概念        1.ios获取字典里的内容并不区分它到底是什么类型(数组、字符、字典等等;    2.它就是一个容器。...
  • shihuboke
  • shihuboke
  • 2017年12月09日 18:18
  • 65

KVC方法详解与实现原理

KVC提供了一种在运行时而非编译时动态访问对象属性与成员变量的方式,该方法不需要调用get和set方法和变量实例就可以访问对象,KVC默认的实现方法有NSOject提供,这种方法及支持对象也支持简单数...
  • ycxmartin111111
  • ycxmartin111111
  • 2014年12月23日 17:54
  • 1905

Key-value数据库

Key-value数据库是一种以键值对存储数据的一种数据库,类似java中的map。可以将整个数据库理解为一个大的map,每个键都会对应一个唯一的值。Key-value数据库代表的有redis。Red...
  • a18826408828
  • a18826408828
  • 2014年11月05日 23:06
  • 5609

jQuery data(key, value)函数 在匹配的元素上随心所欲的存放数据

data(key, value) 返回值:jQuery   在匹配的元素上随心所欲的存放数据。 1.2.3 新增data(key, value) key (String) 将要设置的数据片段...
  • zshake
  • zshake
  • 2013年09月29日 12:30
  • 1553

键值编码(KVC)-简单的KVC

// //  main.m //  KVC一 // //  Created by Goddog on 15/1/3. //  Copyright (c) 2015年 Go...
  • HUXU981598436
  • HUXU981598436
  • 2015年01月03日 15:40
  • 456

数据持久化之SP的优化—送工具类

工具类,能实现存储各种数据类型,也能读取到,所有方法都已经写好,就等你点进来...
  • Jack_King007
  • Jack_King007
  • 2014年11月11日 00:26
  • 1575

Java 中对于枚举双值的使用

转成键值对或者是map 的形式; 键值对的类 public class Kav { /** * 键 */ private String key; /** * 值 */ pr...
  • wanghang88
  • wanghang88
  • 2016年07月22日 09:15
  • 4224
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:键值编码(KVC)KEY VALUE CODING
举报原因:
原因补充:

(最多只允许输入30个字)