当 NSUserDefaults.standardUserDefaults() 中的值发生变化时调用函数

Call function when if value in NSUserDefaults.standardUserDefaults() changes

我有一个从 NSUserDefaults.standardUserDefaults()

变成值的变量
var GiftCount = NSUserDefaults.standardUserDefaults().valueForKey("Gift") as! Int

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

当变量 GiftCount 发生变化时,我需要调用这个函数...怎么办?

第一

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

您可以将 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()
}