假设我有一个密钥@"MyPreference"
,并通过NSUserDefaults
存储了相应的值。
修改值后,有没有办法通知您?
还是可以通过绑定(bind)来完成? (但是在这种情况下,我希望将更改通知我的对象,而不是将值绑定(bind)到UI元素,以便我可以执行其他任务。)
我知道可以观察到NSUserDefaultsDidChangeNotification
,但这似乎是一种全有或全无的方法,而且似乎没有一种机制可以获取修改过的特定键值对。 (随时进行更正。)
最佳答案
整天都在寻找答案,只在问了问题10分钟后才找到答案...
通过键值观察提出了一个解决方案:
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self
forKeyPath:@"values.MyPreference"
options:NSKeyValueObservingOptionNew
context:NULL];
或者,更简单地(按下面的评论):
[[NSUserDefaults standardUserDefaults] addObserver:self
forKeyPath:@"MyPreference"
options:NSKeyValueObservingOptionNew
context:NULL];