我对NSUserdefaults中保留的特定键的值更改感兴趣。但是,我所拥有的并不适合我。 observeValueForKeyPath不会被触发。
更新:我想我已经发现了这个问题。
,而不是使用已定义的常量,如果我使用字符串,则会被触发。[[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行中使用它然后工作。看起来有点繁琐?
答案 0 :(得分:-1)
因此,我将废弃在此实例中使用已定义的常量,并且在我需要在userdefaults中观察某些内容的所有实例中。很遗憾,因为我喜欢将它们用作关键名称。