2010-09-03 76 views
3

我对我在NSUserdefaults中保留的特定键的值更改感兴趣。但是,我拥有的并不是为我工作。 observeValueForKeyPath不会被触发。观察值更改为NSUserDefaults键

更新:我想我已经发现了这个问题。而不是使用定义的常量,如果我使用一个字符串,那么它会被解雇。

[[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

只是一个说明,观察iOS 6上的常量。 – 2013-07-17 20:55:44

回答

-1

所以我要在这个实例和所有需要观察userdefaults中的东西的情况下,废弃使用定义的常量。耻辱,因为我喜欢在整个关键名称中使用它们。