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兼容。