kvc kvo
2015-07-09 18:14
405 查看
Key-Value Coding (KVC) KVC,即是指 NSKeyValueCoding,一个非正式的 Protocol,提供一种机制来间接访问对象的属性。KVO 就是基于 KVC 实现的关键技术之一。 一个对象拥有某些属性。比如说,一个 Person 对象有一个 name 和一个 address 属性。以 KVC 说法,Person 对象分别有一个 value 对应他的 name 和 address 的 key。 key 只是一个字符串,它对应的值可以是任意类型的对象。从最基础的层次上看,KVC 有两个方法:一个是设置 key 的值,另一个是获取 key 的值。如下面的例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 void changeName(Person *p, NSString *newName) { // using the KVC accessor (getter) method NSString *originalName = [p valueForKey:@"name"]; // using the KVC accessor (setter) method. [p setValue:newName forKey:@"name"]; NSLog(@"Changed %@'s name to: %@", originalName, newName); } 现在,如果 Person 有另外一个 key 配偶(spouse),spouse 的 key 值是另一个 Person 对象,用 KVC 可以这样写: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 void logMarriage(Person *p) { // just using the accessor again, same as example above NSString *personsName = [p valueForKey:@"name"]; // this line is different, because it is using // a "key path" instead of a normal "key" NSString *spousesName = [p valueForKeyPath:@"spouse.name"]; NSLog(@"%@ is happily married to %@", personsName, spousesName); } key 与 key pat 要区分开来,key 可以从一个对象中获取值,而 key path 可以将多个 key 用点号 “.” 分割连接起来,比如: [p valueForKeyPath:@"spouse.name"]; 相当于这样…… [[p valueForKey:@"spouse"] valueForKey:@"name"]; 好了,以上是 KVC 的基本知识,接着看看 KVO。
相关文章推荐
- 浅谈Android移动开发程序员的职业发展之路
- Android中AIDL使用例子
- 用Gradle 构建你的android程序
- [注]新手学习编程的最佳方式是什么?
- Swift开发教程--如何清除模拟器的数据
- 引出抽象类的原因是什么???
- oracle中long和date的互换
- 安卓开发黄金搭档:android-studio+Genymotion模拟器
- 全排列
- Set-UID程序漏洞实验
- LevelDB、TreeDB、SQLite3性能对比测试
- Zigbee协议栈中OSAL的运行机理
- Java创建线程的两个方法
- Hard Parse&Soft Parse
- [笔记]格式化jqGrid中的日期与时间,解决时分秒都显示为0
- Sql 分割字符串
- ACM—动态规划-数塔
- 大型项目架构特点
- html中嵌入内容的元素总结
- IOS中修改图片的大小:修改分辨率和裁剪