Cocoa - NSUserDefaults 値の変更に関する通知? 質問する

Cocoa - NSUserDefaults 値の変更に関する通知? 質問する

キー があり@"MyPreference"、対応する値が を通じて保存されているとしますNSUserDefaults

値が変更されたときに通知する方法はありますか?

それとも、バインディングを通じて実行できますか? (ただし、この場合は、値を UI 要素にバインドするのではなく、オブジェクトに変更を通知して、他のタスクを実行できるようにしたいと考えています。)

それが観察できることは承知していますNSUserDefaultsDidChangeNotificationが、これはすべてか無かのアプローチのようで、変更された特定のキーと値のペアを取得するためのメカニズムは存在しないようです。(自由に訂正してください。)

ベストアンサー1

一日中答えを探していたのに、質問してから 10 分後に答えが見つかりました...

Key-Value-Observing を通じて解決策を見つけました:

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

または、もっと簡単に言うと(以下のコメントに従って):

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

おすすめ記事