我有一个字符串被分配给一个NSUserDefaults对象,但我需要有代码值改变时运行。我如何使用委托检查NSUserDefaults对象值?如何使用委托检查NSUserDefaults值是否更改?
回答
嘿,你需要使用KVO (Key Value Observing)
在NSUserDefaults
注册检查找零志愿用下面的代码
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults addObserver:self forKeyPath:@"YourValue to observer" options:NSKeyValueObservingOptionNew context:NULL];
在 '-viewDidDisappear'
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObserver:self forKeyPath:@"YourValue to observer"];
删除观察者最后执行以下方法接收KVO通知,
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"Output : %@ changed property %@ to value %@", object, keyPath, change);
}
viewDidUnload不再在iOS 6中调用。您应该删除viewDidDisappear或dealloc中的观察者。 – rdelmar 2013-05-09 06:17:42
谢谢,更新了答案 – icodebuster 2013-05-09 06:56:33
虽然问题被标记为重复,但您的答案非常感谢您的简单说明。 – 2013-05-10 02:53:12
- 1. 如何检查是否存在NSUserDefaults
- 2. 如何检查nsuserdefaults是否为空
- 3. 我可以用MemberInfo检查成员是否是委托人?
- 4. 错误检查使用Func委托
- 5. 库更改委托签名使用它
- 6. 在调用respondsToSelector之前检查委托是否仍然存在
- 7. 在UITextView上更改文本时是否有委托调用?
- 8. 检查一个对象是否是委托对象
- 9. 使用suiteName检测NSUserDefaults上的更改
- 10. 检查IList是否更改?
- 11. 根据委托检查MethodInfo
- 12. C#委托通知更改
- 13. 如何检查模糊事件上的值是否更改?
- 14. 如何检查php会话是否更改值
- 15. 如何检查输入值是否更改?
- 16. 如何使用委托
- 17. iOS键盘语言更改时是否有委托?
- 18. 使用MVVM如何查看ComboBox是否更改了所选值?
- 19. 检测NSUserDefaults上的更改
- 20. IQueryable.First是否接受委托?
- 21. 如何检查树视图的项目是否在委托中展开?
- 22. gitpython检查使用PYTHON的文件是否有任何更改
- 23. Angular 2 - 检查是否有任何默认值已更改
- 24. 如何检查是否启用了更改跟踪
- 25. Javascript:如何检查用户是否更改域名?
- 26. 委托链接是否必须以空委托开始?
- 27. 有没有更好的方法?委托 - >委托 - >委托
- 28. 如何使用CKSubscription检查CKAsset更改?
- 29. 如何更改应用程序委托中的UITabBar颜色?
- 30. 如何更改应用程序委托指派类
看着另外一个问题,现在我对Objective-C有了更多的了解,这个问题其实并不重复。另一个问题是询问如何响应NSUserDefaultsDidChangeNotification并获取已更改的值。然而,我不知道有一个NSUserDefaultsDidChangeNotification。 – 2014-03-04 03:24:06