Estoy usando NSUserDefaults en mi aplicación y me gustaría recibir notificaciones cuando se cambie un valor en particular. Por eso, he añadido las siguientes líneas en viewDidLoad:NSUserDefaults and KVO issues
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
[settings synchronize];
[settings addObserver:self forKeyPath:@"pref_server" options:NSKeyValueObservingOptionNew context:NULL];
y el método para ser notificado:
- (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");
}
}
Por desgracia, éste nunca se llama ... @ "pref_server" es el identificador de elemento Lo configuré en Root.plist, en Settings.bundle. ¿Qué estoy haciendo mal?
muchas gracias, ahora funciona como un encanto :) – J0o0
Para Swift3: 'NotificationCenter.default.addObserver (auto, \t selector: #selector (defaultsChanged), \t nombre: UserDefaults.didChangeNotification, \t objeto: nada) ' – Yohst