Ich verwende NSUserDefaults in meiner Anwendung und möchte benachrichtigt werden, wenn ein bestimmter Wert geändert wird. Dazu habe ich die folgenden Zeilen in viewDidLoad hinzugefügt:
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
[settings synchronize];
[settings addObserver:self forKeyPath:@"pref_server" options:NSKeyValueObservingOptionNew context:NULL];
Und die zu benachrichtigende Methode:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"Change");
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
if (object == settings && [keyPath isEqualToString:@"pref_server"])
{
NSLog(@"Server did change");
}
}
Leider wird letzteres nie aufgerufen...@"pref_server" ist der Elementbezeichner, den ich in der Root.plist in Settings.bundle festgelegt habe. Was mache ich falsch?