Iphone 使用observeValueForKeyPath观察NSMutableSet中的插入和删除
我希望得到有关在Iphone 使用observeValueForKeyPath观察NSMutableSet中的插入和删除,iphone,objective-c,ipad,Iphone,Objective C,Ipad,我希望得到有关在NSMutableSet中新插入的通知,因此这就是我正在做的,但出于某种原因,它没有调用observeValueForKeyPath方法 仅供测试: -(void)observ{ [self addObserver:self forKeyPath:@"connections" options:NSKeyValueChangeInsertion context:NULL]; [connections addObject:@"connectionName"]; }
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");
}
}
NSMutableSet KVC吗?
NSMutableSet
确实符合KVO/KVC。但是,为了以这种设置方式接收通知,需要为集合实现KVC访问器方法。信息可以找到。基本上,您必须实现以下方法:
-countOfConnections
-enumeratorOfConnections
-memberOfConnections:
-addConnectionsObject:
-removeConnectionsObject:
-intersectConnections:
为了接收KVO通知,必须使用这些方法来访问和修改集合
最后,在您的
-observeValueForKeyPath
方法中,您可以使用change
字典中的键kind
的值来确定发生了什么类型的突变(添加、删除等)。可在“NSKeyValueChange”下找到并列出这些值。希望这能有所帮助。因此,文档中基本上说:NSMutableSet与KVO兼容。