Objective-C KVC键值对

KVC键值对是后期在开发项目的时候会经常用到的,如果搞不清楚那个是key,那个是Value,那么就会很吃亏的,我个人是在这方面吃了很多的亏,特别是在做通讯录的时候. 也许刚开始接触的不过是简单的字典,或者是简单的数组,但等到后期遇到字典里包含数组,数组中还有数组,然后在套字典等等,那就SB了.

KVC:全拼是(Key-Value-Coding),键值编码. 是一种间接访问实例变量的方法. key:键,用于标识实例变量. Value:值,是实例变量对应的值.下面介绍一下KVC使用的一些方法:

第一:修改值的方法 

1.setValue:forKey:

2.setValue:forKeyPath:

3.setValue:forUndefinedKey:

4.setValuesForKeysWithDicitonary:

 

第二:获取值

1.valueForKey:

2.valueForKeyPath:

3.valueForUndefinedKey:

我们今天只说经常会使用的两个方法:

1.setValue:forKey:

首先要在Student.h类中定义好两个属性

@property(nonatomic,copy)NSString *name;

@property(nonatomic,copy)NSString *sex;

在main函数中使用KVC

Student *stu = [[Student alloc]init]; 创建一个学生对象

[stu setValue:@"dandan" forKey:@"name"];使用KVC进行赋值

这里的Value是你要设置的值,这个值是name的值,我把改成"dandan", 值有了,那么要把这个值找个对应的属性变量,forKey就是你在Student.h中定义的name. 这个key要与你属性定义的一样.

2.setValue: forUndefinedKey:

[stu setValue:@"120" forUndefinedKey:@"weight"];

首先需要强调的,我们在Student.h中没有定义weight的属性,所以是找不到的,按常理说你找不到的Key,编译器应该是报错的,但是使用了这个方法不会报错,而且还会提示我们:没有对应的实例变量,这个方法在后期做项目的时候会经常使用.记住!!!!!

3.setValuesForKeysWithDictionary:

现在有一个需求就是通过字典给对象赋值,那么我们就得用上面的方法.首先我们要创建一个字典对象.

NSDictionary *dataDic = [[NSDictionary alloc]initWithObjectsAndKeys:@"Jack",@"name",@"male",@"sex",nil];

[stu setValuesForKeysWithDictionary:dataDic];

这样我们就通过字典给stu对象赋值了.可能不能一下子理解,那么就自己在工程多练习练习

posted @ 2015-04-16 18:05  why2wm  阅读(295)  评论(0编辑  收藏  举报