Digamos que tengo una clave @ "MyPreference", con un valor correspondiente almacenado a través de NSUserDefaults.Cocoa - ¿Cambia la notificación en NSUserDefaults?
¿Hay alguna manera de ser notificado cuando se modifica el valor?
¿O podría hacerse a través de fijaciones? (Pero en este caso, en lugar de vincular el valor a un elemento UI, deseo que mi objeto sea notificado del cambio para que pueda realizar otras tareas).
Soy consciente de que NSUserDefaultsDidChangeNotification se puede observar, pero esto parece ser un enfoque de todo o nada, y no parece haber un mecanismo para llegar al par clave-valor específico que se modificó. (. No dude en corregir)
También puede llamar a este método de '[NSUserDefaults standardUserDefaults]' y no tener que anteponer los "valores". a la ruta clave. Los otros parámetros permanecen sin cambios. –
No pude hacer que funcione porque Quin sugirió usar '[NSUserDefaults standardUserDefaults]'. Sin embargo, el apéndice de cadena no es necesario como '... forKeyPath: @" values.MyPreference "...' funcionará. Además, deberá implementar '- (void) observeValueForKeyPath: (NSString *) keyPath ofObject: (id) objeto change: (NSDictionary *) cambie contexto: (void *) context;' para capturar realmente el evento. – TrevorL
Hola TrevorL ... aunque stringByAppendingString: no es necesario, ayuda al crear un método genérico - (void) observePreferencia: (NSString *) pref {... [@ "values." stringByAppendingString: pref] ... – Arvin