Diciamo che ho una chiave @ "MyPreference", con un valore corrispondente memorizzato tramite NSUserDefaults.Cacao - Notifica sulla modifica del valore di NSUserDefaults?
C'è un modo per essere avvisati quando il valore viene modificato?
Oppure potrebbe essere eseguito tramite attacchi? (Ma in questo caso, invece di legare il valore a un elemento dell'interfaccia utente, desidero che il mio oggetto venga informato della modifica, in modo da poter eseguire altre attività.)
Sono consapevole che NSUserDefaultsDidChangeNotification può essere osservato, ma questo sembra essere un approccio tutto-o-niente, e non sembra esserci un meccanismo per arrivare alla coppia chiave-valore specifica che è stata modificata. (. Sentitevi liberi di correggere)
Si potrebbe anche chiamare questo metodo in '[NSUserDefaults standardUserDefaults]' e non dover anteporre i "valori". al percorso chiave. Gli altri parametri rimangono invariati. –
Non ero in grado di farlo funzionare come Quin suggeriva di usare '[NSUserDefaults standardUserDefaults]'. Tuttavia, la stringa append non è necessaria poiché '... forKeyPath: @" values.MyPreference "...' funzionerà. Inoltre, è necessario implementare '- (void) observValueForKeyPath: (NSString *) keyPath ofObject: (id) modifica dell'oggetto: (NSDictionary *) modifica contesto: (void *) contesto;' per acquisire effettivamente l'evento. – TrevorL
Hi TrevorL ... anche se stringByAppendingString: non è necessario, aiuta quando si crea un metodo generico - (void) observPreference: (NSString *) pref {... [@ "valori." stringByAppendingString: pref] ... – Arvin