我在iOS应用程序中使用settings.bundle中的一些设置。我想监视这些设置的更改。我已经知道我可以通过使用NotificationCenter.default.addObserver(self, selector: #selector(onSettingsChanged), name: UserDefaults.didChangeNotification, object: nil)
来做到这一点。
但是,这仅通知我设置已更改,但不会告诉我是哪一个?有没有办法仅为特定设置注册观察者,或者将更改的设置作为参数提供给观察者?
可以传递包含已更改设置的对象。
例如。
var settings = ["setting1": "changes"]
作为用户更改设置,您需要更新settings
对象
settings["setting1"] = "something changed"
您可以在通知中传递settings
对象。
// Post a notification to inform about settings
NotificationCenter.default.post(name: NSNotification.Name(rawValue: UserDefaults.didChangeNotification), object: nil, userInfo: settings)