Наблюдение за вставками и удалениями из NSMutableSet с использованием наблюдением - PullRequest
4 голосов
/ 04 декабря 2011

Я хотел бы получить уведомление о новой вставке в 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?

1 Ответ

3 голосов
/ 04 декабря 2011

NSMutableSet действительно соответствует KVO / KVC. Тем не менее, чтобы получать уведомления в соответствии с настройкой, вам необходимо реализовать методы доступа KVC для набора. Информацию можно найти здесь . По сути, вы должны реализовать методы с именем:

-countOfConnections
-enumeratorOfConnections
-memberOfConnections:
-addConnectionsObject:
-removeConnectionsObject:
-intersectConnections:

Вы должны использовать эти методы для доступа и изменения вашего устройства для получения уведомлений KVO.

Наконец, в вашем методе -observeValueForKeyPath вы можете использовать значение ключа kind в словаре change, чтобы определить тип мутации (добавление, удаление и т. Д.). Значения можно найти здесь и перечислены в разделе «NSKeyValueChange». Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...