我希望收到关于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吗?
答案 0 :(得分:3)
NSMutableSet
确实符合KVO / KVC标准。但是,为了按照您设置的方式接收通知,您需要为集合实现KVC访问器方法。可以找到信息here。实质上,您必须实现名为:
-countOfConnections
-enumeratorOfConnections
-memberOfConnections:
-addConnectionsObject:
-removeConnectionsObject:
-intersectConnections:
您必须使用这些方法来访问和改变您的设置才能接收KVO通知。
最后,在-observeValueForKeyPath
方法中,您可以使用kind
字典中的键change
的值来确定发生了哪种类型的突变(添加,删除等) 。可以找到值here并列在“NSKeyValueChange”下。希望这会有所帮助。