iOS学习--KVC
来源:互联网 发布:centos安装输入法 编辑:程序博客网 时间:2024/05/25 05:36
今日就来回顾一下KVC。在object-c中,前面使用@property关键字可以为类的成员变量自动生成它的geter与setter方法,从而可以直接使用点语法来访问
类的成员变量。其实,object-c中还有另外一个方式来间接访问类的成员变量。那个就是今天回顾的KVC了
KVC的概念:Key---Value--coding.直译就是“键值编程”。其实使用KVC,还有使用键路径的方式访问数据的,下面再表。
在每一个对象当中的成员变量,在KVC中都会有一个key对应着这个成员变量的值,而key是一个字符串,但是这个字符串的内容是有很明确的规定的。
必须是成员变量的名字。也就是说,KVC就是通过这个字符串来查找成员的变量,并进行访问的。
那么,KVC内部是如何查找的呢?它也是按照一定的顺序,比如先按照(key)来查找,找不到就is(key).....这部分KVC内部实现原理的知识还没有深入研究,
知识大概了解过。网上有很多这些资料。同理,在获取也是通过的方式的。
使用键值的方式访问变量,常用的方法是 [setValue forkey] 和[ valueforkey ];
好,下面马上post上代码。
1、首先在工程中添加一个Person的类,在.h文件中添加它的两个成员age ,books。同时,也定义一个Book的类.
//Person.h
@interface Person : NSObject{ int height; Book *books;}
<span style="font-family: Arial, Helvetica, sans-serif;">@end</span>
@implementation Person
@end
//Book.h
@interface Book : NSObject@property (nonatomic, assign) double price;@end
//Book.m 同样没有对price成员变量做实现get和set方法,代码不贴。
在主函数里面调用:
Person *Jack = [[Person alloc] autorelease]; NSNumber *JackHeight = @(10); [Jack setValue:JackHeight forKey:@"height"];//通过key对成员变量进行赋值 int height = [[Jack valueForKey:@"height"] intValue]; //通过key获取成员变量的值 NSLog(@"Jack height:%d",height);
输出结果:
2014-11-13 23:48:24.257 Foundation04-NSArray(OC数组)[785:303] Jack height:10
总结:使用KVC的键值间接访问成员变量。
2、除了通过键值访问类的成员变量,还可以通过键路径的方式访问。思路就是每一层数据的包含,都会有对应的路径一一对应。这个就像一个树状图一样,顺藤摸瓜!
在主函数中调用:
Person *Chuck = [[Person alloc] autorelease]; Book *book1 = [[Book alloc] autorelease]; book1.price = 20.3; [Chuck setValue:book1 forKey:@"books"]; NSNumber *bookPrice = [Chuck valueForKeyPath:@"books.price"]; NSLog(@"chuck`s books price is:%f",[bookPrice doubleValue]);
输出结果:
2014-11-13 23:56:01.502 Foundation04-NSArray(OC数组)[820:303] chuck`s books price is:20.300000
总结:键路径跟键值访问其实都是一样的。至于KVC原理,看了也忘了,也是记得大概。
---今晚好累,想早点训教!谢谢各位浏览并作出指导!晚安,to be continut.!
- ios学习--kvo/kvc
- ios学习--kvc
- iOS学习--KVC
- iOS-KVC/KVO学习
- iOS学习之KVO、KVC
- iOS中KVO,KVC的学习记录
- iOS中KVO,KVC的学习记录
- iOS中键值编码KVC的学习
- iOS学习之KVC中setValuesForKeysWithDictionary:
- iOS学习笔记: 初步探索KVC & KVO
- IOS学习笔记之KVC、KVO
- ios学习路线—Objective-C(KVC)
- [ios]kvc
- iOS kvc
- IOS KVC
- ios kvc
- iOS KVC
- KVC学习
- 嵌入式gdb工具编译
- POJ 3253 Fence Repair
- Android 属性动画(Property Animation) 完全解析
- 记录ubuntu安装python科学计算工具包numpy
- 实用代码段2
- iOS学习--KVC
- 实验四: 字符串和多维数组 实验
- 【Android工具类】比DES加密更安全的算法——3DES加密算法
- include sys/stat.h的位置以及restrict关键字
- py2exe使用教程(八)——配置选项(优化和绑定)
- 多线程编程1(互斥对象、简单火车售票系统)
- HDU 3879 Base Station 最大权闭合图
- 接外包项目,如何远离垃圾客户
- 黑马程序员--第一天学习