如果NSUserDefaults.standardUserDefaults()中的值发生更改,则调用函数

时间:2016-04-13 20:12:01

标签: swift variables swift2 nsuserdefaults

我有一个变量来自NSUserDefaults.standardUserDefaults()

var GiftCount = NSUserDefaults.standardUserDefaults().valueForKey("Gift") as! Int

我有一个名为setGiftCount()的函数......

我需要在变量GiftCount发生变化时调用此函数......怎么做?

2 个答案:

答案 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()
}