Меня интересует изменение значения конкретного ключа, который я храню в 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, тогда это работает. Кажется немного беспокойным?