【问题标题】:How to find which setting changed in iOS NotificationCenter addObserver [duplicate]如何在iOS NotificationCenter addObserver中查找更改的设置[重复]
【发布时间】:2023-04-05 23:08:01
【问题描述】:

我在我的 iOS 应用程序中使用 settings.bundle 中的一些设置。我想监控这些设置的变化。我已经知道我可以使用 NotificationCenter.default.addObserver(self, selector: #selector(onSettingsChanged), name: UserDefaults.didChangeNotification, object: nil) 来做到这一点。

但是,这只会告诉我设置已更改,但不会告诉我是哪一个?有没有办法只为特定设置注册观察者,或者将更改后的设置作为参数提供给观察者?

【问题讨论】:

  • 不是那个问题的重复。此问题询问如何观察特定设置,或如何知道更改了哪个设置。那个问题不问这些事情,那个问题的答案也没有回答这些事情。
  • @robmayoff 感谢您的支持,但它实际上在某种程度上是重复的。如果您阅读另一个问题的 cmets 中的讨论,您会看到有一个答案,说明我想做的事情不可能开箱即用。您必须保存设置的最后状态并手动检查每个设置的更改。 :(
  • 您可以使用 KVO 观察特定设置。

标签: ios swift


【解决方案1】:

您可以传递一个包含更改的设置的对象。

例如。

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) 

【讨论】:

  • 但是我的 Settings.bundle 文件和变量 settings 之间的联系在哪里?
猜你喜欢
  • 2018-02-16
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
相关资源
最近更新 更多