キー があり@"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];