Mel*_*emi 4 cocoa cocoa-touch key-value-observing
我想监视NSCountedSet以查看其内容是否发生了变化.设置KVO似乎是编译但它没有被触发.第一个问题:你能观察到一套吗?如果是这样,那么这条消息有问题吗?
[subViewA addObserver:subViewB forKeyPath:@"countedSet" options:0 context:NULL];
Run Code Online (Sandbox Code Playgroud)
我真的只是想监视计数的(在对象的数量)设定是否有帮助.
编辑 - 这是观察者(subViewB):
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
if ([keyPath isEqual:@"countedSet"]) {
NSLog(@"Set has changed");
}
}
Run Code Online (Sandbox Code Playgroud)
Edit2 - 将addObserver消息从subView移动到viewController.所以我试图让一个subView观察另一个viewController的子视图中的NSCountedSet.关键路径是"相对于接收器" - 我假设它是subViewA.
直接与设置对象交谈不会发出KVO更改通知.您需要以符合KVC的方式更改属性的设置值.有两种方法:
mutableSetValueForKey:
消息.这将为您提供一个假设置对象,该对象包装该属性并围绕您对其所做的每个更改发布KVO通知.[myCountedSet addObject:foo]
(除了addCountedSetObject:
); 你应该用[self addCountedSetObject:foo]
.我推荐#2.听起来似乎更多的工作,但它并不多,而且它可以提供非常好的代码.
"模型对象实施指南"和"核心数据编程指南"中的更多详细信息(即使这不是特定于核心数据).
归档时间: |
|
查看次数: |
1592 次 |
最近记录: |