我有一個字符串被分配給一個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