cocoa - Cocoa - Benachrichtigung bei NSUserDefaults Wertänderung?




2 Answers

Habe den ganzen Tag nach der Antwort gesucht, nur um es 10 Minuten nach der Frage zu finden ...

Durch Key-Value-Observing eine Lösung gefunden:

[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self
    forKeyPath:@"values.MyPreference"
    options:NSKeyValueObservingOptionNew
    context:NULL];

Oder, einfacher (pro Kommentar unten):

[[NSUserDefaults standardUserDefaults] addObserver:self
                                        forKeyPath:@"MyPreference"
                                           options:NSKeyValueObservingOptionNew
                                           context:NULL];

Nehmen wir an, ich habe einen Schlüssel @ "MyPreference" mit einem entsprechenden Wert, der über NSUserDefaults gespeichert wird.

Gibt es eine Möglichkeit, benachrichtigt zu werden, wenn der Wert geändert wird?

Oder könnte es durch Bindungen gemacht werden? (Anstatt jedoch den Wert an ein UI-Element zu binden, möchte ich, dass mein Objekt über die Änderung informiert wird, damit ich andere Aufgaben ausführen kann.)

Ich bin mir bewusst, dass NSUserDefaultsDidChangeNotification beobachtet werden kann, aber dies scheint ein Alles-oder-Nichts-Ansatz zu sein, und es scheint dort kein Mechanismus zu sein, um das spezifische Schlüssel-Wert-Paar zu erhalten, das modifiziert wurde. (Fühlen Sie sich frei zu korrigieren.)







Related

cocoa notifications preferences