【转】 iOS KVO KVC
原文: http://www.cocoachina.com/industry/20140224/7866.html
Key Value Coding Key Value Coding是cocoa的一个标准组成部分,它能让我们可以通过name(key)的方式访问property, 不必调用明确的property accssor, 如我们有个property叫做foo, 我们可以foo直接访问它,同样我们也
“”

- @interface People: NSObject
- @property (nonatomic, strong) NSString *name;
- @property (nonatomic, strong) NSNumber *age;
- @end
- - (id)tableView:(NSTableView *)tableview
- objectValueForTableColumn:(id)column row:(NSInteger)row {
- People *people = [peoleArray objectAtIndex:row];
- if ([[column identifier] isEqualToString:@"name"]) {
- return [people name];
- }
- if ([[column identifier] isEqualToString:@"age"]) {
- return [people age];
- }
- // And so on.
- }
- People *people = [peopleArray objectAtIndex:row];
- return [people valueForKey:[column identifier]];
- -(id) initWithDictionary:(NSMutableDictionary*) jsonObject
- {
- if((self = [super init]))
- {
- [self init];
- [self setValuesForKeysWithDictionary:jsonObject];
- }
- return self;
- }
- - (void)setValue:(id)value forUndefinedKey:(NSString *)key
- {
- if([key isEqualToString:@"nameXXX"])
- self.name = value;
- if([key isEqualToString:@"ageXXX"])
- self.age = value;
- else
- [super setValue:value forKey:key];
- }
- -(void) setValue:(id)value forKey:(NSString *)key
- {
- if([key isEqualToString:@"products"])
- {
- for(NSMutableDictionary *productDict in value)
- {
- Prodcut *product = [[Product alloc] initWithDictionary:prodcutDict];
- [self.products addObject:product];
- }
- }
- }
- [array valueForKeyPath:@"name.capitalizedString"]
- - (void)removeObservation {
- [self.object removeObserver:self
- forKeyPath:self.property];
- }
- - (void)addObservation {
- [self.object addObserver:self forKeyPath:self.property
- options:0
- context:(__bridge void*)self];
- }
- - (void)observeValueForKeyPath:(NSString *)keyPath
- ofObject:(id)object
- change:(NSDictionary *)change
- context:(void *)context {
- if ((__bridge id)context == self) {
- // 只处理跟我们当前class的property更新
- }
- else {
- [super observeValueForKeyPath:keyPath ofObject:object
- change:change context:context];
- }
- }
【转】 iOS KVO KVC的更多相关文章
- iOS:KVO/KVC 的概述与使用
iOS:KVO/KVC 的概述与使用 KVO APP开发技术QQ群:347072638 一,概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性 ...
- iOS KVO & KVC
键值观察:值更改时通知观察者 键值观察(Key-value observing,或简称 KVO)允许对象观察另一个对象的属性.该属性值改变时,会通知观察对象.它了解新值以及旧值:如果观察的属性为对多的 ...
- 【iOS】KVC 与 KVO
一.KVC与KVO *"KVC":key value Coding(键值编码) *目的:间接的改动或获取对象的属性,减少程序(类与类)之间的耦合度. *"KVO" ...
- IOS之KVC和KVO(未完待续)
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- KVO/KVC总结
KVO/KVC总结 下面是根据网上文章的总结,方便查看. 在网上看别人的文章,了解KVC.KVO,有个kvo-kvc的例子,就是改变数组的内容(插入和删除),同步改变tableview中的 ...
- iOS KVO概述
iOS KVO概述 面试中经常会被问到:什么是KVO?这个问题既然出现概率这么大,那么我们就来详细讲一讲到底什么是KVO.下次再有面试官问你的时候,你就可以娓娓道来,以彰显高逼格 概述 问:什么是KV ...
- iOS kvo 结合 FBKVOController 的使用
iOS kvo 结合 FBKVOController 的使用 一:FBKVOControlloer是FaceBook开源的一个 在 iOS,maxOS上使用 kvo的 开源库: 提供了block和@s ...
- 【原】iOS中KVC和KVO的区别
在iOS开发中经常会看到KVC和KVO这两个概念,比较可能混淆,特地区分一下 KVC(Key Value Coding) 1> 概述 KVC:Key Value Coding,键值编码,是一种间 ...
- iOS 中KVC、KVO、NSNotification、delegate 总结及区别-b
1.KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性.而不是通过调用Setter.Getter方法访问.KVO 就是基于 KVC 实现的 ...
随机推荐
- 如何快速使用ECharts绘制可视化图表
1.在ECharts官网,下载ECharts的源码和示例文件. 2.解压缩下载下来的Echars压缩包,找到doc\example\www\echartsjs目录,将里面的js文件全部取出来,放到项目 ...
- Delphi直接让QT进入指定房间
WinExec('./QT/QT.exe qt://join/?roomid=3955&subroomid=287307288&ext=gid:536023504;et:1001', ...
- Linux Shell编程(15)——操作字符串
Bash已经支持了令人惊讶的字符串操作的数量.不幸地,这些工具缺乏统一的标准.一些是参数替换的子集,其它受到UNIX的expr命令的功能的影响.这导致不一致的命令语法和冗余的功能,但这些并没有引起混乱 ...
- 【转】Android Listener侦听的N种写法
原文网址:http://blog.csdn.net/ithomer/article/details/7489274 Android中,View的Listener方法,在是否使用匿名类匿名对象时,有各种 ...
- JavaScript高级程序设计6.pdf
ECMAScript通过RegExp类型来支持正则表达式 var expression=/pattern/flags;其中模式(pattern)部分是正则表达式,可以包含字符类.限定符.分组.向前查找 ...
- 自动布局AutoLayout
1:理解概念 Auto Layout 中文翻译过来意思是 自动布局 ,通过内定的 Constraint (约束)和各项条件来计算出合理的布局.而这个合理的布局,符合我们的的预期和意图. 将我们想象中的 ...
- Python自带的日志模块logging的使用
import logging # 创建一个logger logger = logging.getLogger('cmccLogger') logger.setLevel(logging.DEB ...
- request和response的中文乱码问题
request乱码指的是:浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码: response乱码指的是:服务器向浏览器发送的数据包含中文字符,浏览器中显示的是乱码: ...
- nrf51822蓝牙芯片ble_app_proximity程序总结
近期由于钥匙的事情,研究了下官方自带的ble_app_proximity程序,事实上就是跟防丢有关系的程序. 同一时候也发现了看nordic程序的一些门道,主要还是看协议栈里面的一些service,首 ...
- HDU 1025 Constructing Roads In JGShining's Kingdom (DP)
Problem Description JGShining's kingdom consists of 2n(n is no more than 500,000) small cities which ...