我有一个变量来自NSUserDefaults.standardUserDefaults()
var GiftCount = NSUserDefaults.standardUserDefaults().valueForKey("Gift") as! Int
我有一个名为setGiftCount()的函数......
我需要在变量GiftCount发生变化时调用此函数......怎么做?
答案 0 :(得分:16)
首先
NSUserDefaults.standardUserDefaults().addObserver(self, forKeyPath: "Gift", options: NSKeyValueObservingOptions.New, context: nil)
<强>第二强>
deinit {
NSUserDefaults.standardUserDefaults().removeObserver(self, forKeyPath: "Gift")
}
<强>第三强>
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
setGiftCount()
}
P.S。谢谢你的选票!
答案 1 :(得分:8)
您可以将NSUserDefaultsDidChangeNotification的观察者添加到视图控制器:
中加入:
NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange), name: UserDefaults.didChangeNotification, object: nil)
删除它:
NotificationCenter.default.removeObserver(self, name: UserDefaults.didChangeNotification, object: nil)
并添加选择器方法:
func userDefaultsDidChange(_ notification: Notification) {
// your code... setGiftCount()
}