Наблюдение изменений значения в ключе NSUserDefaults - PullRequest
3 голосов
/ 03 сентября 2010

Меня интересует изменение значения конкретного ключа, который я храню в NSUserdefaults. Однако то, что у меня есть, не работает для меня. НаблюдениеValueForKeyPath не срабатывает.

Обновление: я думаю, что обнаружил проблему. Вместо использования определенной константы, если я использую строку, она запускается.

[[NSUserDefaults standardUserDefaults] addObserver:self forKeyPath:kSomethingInteresting options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:nil];


}

- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context {

 NSLog(@"Defaults changed, %@.%@", object, keyPath);

 if ((object == [NSUserDefaults standardUserDefaults]) && [keyPath isEqualToString:kSomethingInteresting]) {
  NSLog(@"kSomethingInteresting changed in defaults");
 }
}

Не идеально, но если мне предшествует строка addOberver:

NSString* keyToObserve = kSomethingInteresting;

И используйте это в строке addObserver, тогда это работает. Кажется немного беспокойным?

1 Ответ

0 голосов
/ 03 сентября 2010

Итак, я собираюсь отказаться от использования определенной константы в этом случае и во всех случаях, когда мне нужно наблюдать что-то в пользовательских ошибках. Позор, так как мне нравится использовать их для ключевых имен.

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