我有一個字符串被分配給一個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. 如何檢查自定義委託是否已設置?
- 4. 我可以用MemberInfo檢查成員是否是委託人?
- 5. 錯誤檢查使用Func委託
- 6. ,如何檢查ImageField是否已更改?
- 7. 如何檢查EditText是否被更改?
- 8. JPanel檢查值是否更改
- 9. 庫更改委託簽名使用它
- 10. 在調用respondsToSelector之前檢查委託是否仍然存在
- 11. 在UITextView上更改文本時是否有委託調用?
- 12. 是否可以更改didOutputSampleBuffer委託被調用的速率?
- 13. 如何更改委託爲對象
- 14. Pubnub iOS:如何更改Pubnub委託?
- 15. 如何更改塊的委託方法?
- 16. 檢查一個對象是否是委託對象
- 17. 訪問NSUserDefaults時,是否需要使用委託來維護MVC模式?
- 18. 如何在使用模擬器時檢查watchkit委託調用?
- 19. 使用suiteName檢測NSUserDefaults上的更改
- 20. 檢查IList是否更改?
- 21. 如何知道UIWebView是否有委託
- 22. 根據委託檢查MethodInfo
- 23. NSUserDefaults的值更改
- 24. 使用循環檢查值是否已更改?
- 25. C#委託通知更改
- 26. 更改SKProduct/SKPayment委託人
- 27. 如何否定委託?
- 28. 如何檢查輸入值是否更改?
- 29. 如何檢查模糊事件上的值是否更改?
- 30. 如何檢查php會話是否更改值
看着另外一個問題,現在我對Objective-C有了更多的瞭解,這個問題其實並不重複。另一個問題是詢問如何響應NSUserDefaultsDidChangeNotification並獲取已更改的值。然而,我不知道有一個NSUserDefaultsDidChangeNotification。 – 2014-03-04 03:24:06