Używam NSUserDefaults w mojej aplikacji i chcę otrzymywać powiadomienia o zmianie konkretnej wartości. Do tego dodałem następujące linie w viewDidLoad:Problemy NSUserDefaults i KVO
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
[settings synchronize];
[settings addObserver:self forKeyPath:@"pref_server" options:NSKeyValueObservingOptionNew context:NULL];
i metoda być zgłoszone:
- (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");
}
}
Niestety, ten ostatni nigdy nie jest nazywany ... @ „pref_server” jest identyfikatorem pozycja Ustawiłem w Root.plist, w Settings.bundle. Co ja robię źle?
Dziękuję bardzo, że teraz działa jak czar :) – J0o0
Dla Swift3: 'NotificationCenter.default.addObserver (self, \t selektor: #selector (defaultsChanged) \t nazwa: UserDefaults.didChangeNotification, \t object: nil) ' – Yohst