我想收到有关 NSMutableSet
中新插入的通知,因此这就是我正在做的事情,但出于某种原因,它没有调用 observeValueForKeyPath
方法
仅供测试:
-(void)observ{
[self addObserver:self forKeyPath:@"connections" options:NSKeyValueChangeInsertion context:NULL];
[connections addObject:@"connectionName"];
}
这永远不会被调用:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if( [keyPath isEqualToString:@"connections"] ) {
NSLog(@"added new object");
}
}
NSMutablSet 是 KVC 吗?
最佳答案
NSMutableSet
确实符合 KVO/KVC。但是,为了按照您设置的方式接收通知,您需要为一个集合实现 KVC 访问器方法。可以查资料here .本质上,您必须实现以下方法:
-countOfConnections
-enumeratorOfConnections
-memberOfConnections:
-addConnectionsObject:
-removeConnectionsObject:
-intersectConnections:
您必须使用这些方法来访问和改变您的集合,以便接收 KVO 通知。
最后,在您的-observeValueForKeyPath
方法中,您可以使用change
字典中键kind
的值来确定什么类型发生突变(添加、删除等)。这些值可以在 here 中找到并列在“NSKeyValueChange”下。希望这会有所帮助。
关于iphone - 使用 observeValueForKeyPath 观察 NSMutableSet 的插入和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8375282/