iOS:KVC的概述与使用
2015-04-29 22:33
246 查看
@interface Student : Person { NSString * _name; Phone * _phone; } @end @implementation Student @end @interface Phone : NSObject { NSString * _brand; CGFloat _price; } @end @implementation Phone @end Student * stu = [[Student alloc] init]; [stu setValue:@"张三" forKey:@"name"]; NSLog(@"%@",[stu valueForKey:@"name"]); Phone * aPhone = [[Phone alloc] init]; [stu setValue:aPhone forKey:@"phone"]; NSLog(@"phone = %@",[stu valueForKey:@"phone"]); [stu setValue:@"苹果" forKeyPath:@"phone.brand"]; NSLog(@"phone.brand = %@",[stu valueForKeyPath:@"phone.brand"]);
KVC 键-值-编码 key-value-coding KVC是一种间接访问对象属性的机制,使用该机制不需要调用存取方法和变量实例就可以访问对象属性.
KVC的基本用法:
键/值编码中的基本调用包括 -valueForKey: 和 -setValue: forKey: 这两个方法,它们以字符串的形式向对象发送消息,字符串是我们关注属性的关键.
赋值规律:
1,先找有没有和key同名的实例变量,有的就赋值
2,没有的话再找和实例变量同名加_的实例变量
3,如果还没有自动调用-setValue: forUndefinedKey:
取值规律:
1,先找有没有和key同名的实例变量,有的话就赋值
2,没有的话再找和实例变量同名加_的实例变量
3,如果还没有自动调用valueForUndefinedKey:
键路径访问属性
如果访问这个类的属性的属性,就要用到键路径. 我们可以通过 setValue: forKeyPath: 来给属性的属性赋值 通过valueForKeyPath取值
例:(注意加粗部分书写)
[stu setValue:@"苹果" forKeyPath:@"phone.brand"];
[stu valueForKeyPath:@"phone.brand"]
路径必须是: 属性名1 . 属性名2
这里我们需要注意,当我们通过setValue: forKey: 设置对象的值,或通过valueForKey来获取对象的值时,如若对象的实例变量为基本数据类型时(char ,int, float, BOOL),我们需要对数据进行封装.
相关文章推荐
- ios:KVC的概述与使用
- ios:KVC的概述与使用
- iOS:KVO/KVC 的概述与使用
- ios:KVC的概述与使用
- iOS:KVO/KVC 的概述与使用
- ios:KVC的概述与使用
- iOS:KVO/KVC 的概述与使用
- iOS:KVO/KVC 的概述与使用
- iOS:KVO/KVC 的概述与使用
- ios:KVC的概述与使用
- ios之KVC机制的使用/ KVO机制使用的概述
- iOS:KVO/KVC 的概述与使用
- ios:KVC的概述与使用
- iOS:KVO/KVC 的概述与使用
- ios:KVC的概述与使用
- iOS:KVO/KVC 的概述与使用
- iOS:KVO的概述与使用
- ios之UITextField使用技巧概述/代理过滤字符/按return隐藏键盘/通知等用法
- iOS中使用KVC实现JSON数据与Objective-C实体对象之间的转换
- iOS--kvo&kvc的使用