我开始进入 NSUserDefaults 的内部密室,现在我可以使用提供的选择器加上 NSNotification 对象作为参数成功拦截 NSUserDefaultsDidChangeNotification 通知。然而,返回的 NSNotification 对象并没有按照我的预期出现。
我所期待的是:
1)从通知中心接收NSUserDefaultsDidChangeNotification。
2) 询问返回的提供的 NSNotification 对象,以获取至少包含一个键/值对的用户信息,其中 key="While you were sleeps the following defaultschanged" 和 object="已采用新值的应用程序键的 NSArray"。
我得到的是:
1)同上
2)用户信息=零! (有人知道为什么吗……?)
我的应用程序委托是 NSUserDefaultsDidChangeNotification 的注册响应者,因此会将更改分发给需要了解其设置不同的任何对象。在我开始编写自己的代码来检测哪些键受到用户默认值更改的影响之前,任何人都可以建议我吗? (a) 是否必须确定自己发生了哪些变化——或者我是否遗漏了一些非常明显的东西? (b) 谁能给我一些文档(除了开发文档之外!),其中给出了如何以 Apple 批准的方式处理 NSUserDefaultsDidChangeNotification 的示例?如果可能的话,我不想重新发明轮子。我已经转储了返回的 NSNotification 对象的 DictionaryRepresentation - 但显然,它也包含 Apple 自己的所有键/值。
再次提前致谢。
V.V.
您可以使用KVO(键值编码)跟踪 NSUserDefaults 中的特定键。
请参阅我的答案和代码片段:https://stackoverflow.com/a/10950217/388412
您可以注册为观察 NSUserDefaults standardUserDefaults 对象的特定键的键值更改,而不是在 NSNotificationCenter 中注册为任何 NSUserDefaultsDidChangeNotifications 的一般观察者。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)