gpt4 book ai didi

objective-c - 帮助观察键值

转载 作者:行者123 更新时间:2023-12-03 16:23:03 25 4
gpt4 key购买 nike

我需要一些关于 KVO 的帮助,我已经完成一半了。我想做的是当树 Controller 中的某些内容发生变化时触发一个方法。

所以我使用此代码来注册为 KVO。

[theObject addObserver: self
forKeyPath: @"myKeyPath"
options: NSKeyValueObservingOptionNew
context: NULL];

但是当我观察到的关键路径发生变化时如何触发方法?

还有一个问题,当我将自己添加为观察者时,我希望关键路径成为我的核心数据模型中的一个属性,我做得正确吗?

最佳答案

覆盖observeValueForKeyPath:ofObject:change:context:调度您想要调用的方法。

@interface Foo : NSObject {
NSDictionary *dispatch;
...
}
@end
@implementation Foo
-(id)init {
if (self = [super init]) {
dispatch = [[NSDictionary dictionaryWithObjectsAndKeys:NSStringFromSelector(@selector(somethingHappenedTo:with:)),@"myKeyPath",...,nil] retain];
...
}
}
...
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
SEL msg = NSSelectorFromString([dispatch objectForKey:keyPath]);
if (msg) {
[self performSelector:msg withObject:object withObject:keyPath];
}
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
...

有关详细信息,请参阅“Receiving Notification of a Change ”。

关于objective-c - 帮助观察键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1510474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com