UserDefaults 观察者在没有硬输入参数后停止工作
UserDefaults observer stopped working after not hardtyping the parameter
我的 UserDefault 观察器过去工作正常,直到我将 forKeyPath 参数替换为字符串 Struct 而不是硬键入它。
以前工作时的样子:
UserDefaults.standard.addObserver(self, forKeyPath: "packagename.fontSize", options: .new, context: nil)
现在如何(不再工作)
UserDefaults.standard.addObserver(self, forKeyPath: UserSavedSettings.FontSize, options: .new, context: nil)
参数改变后的功能:
observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?)
不再调用...
这是我的UserSavedSettings.FontSize声明
struct UserSavedSettings {
static let FontSize = "packagename.fontSize"
static let FontType = "packagename.fontType"
static let Theme = "packagename.theme"
}
有什么办法可以解决这个问题吗?提前致谢!
好吧,似乎 当我删除我的 UserSavedSettings 字符串上的点 时它工作正常。
struct UserSavedSettings {
static let FontSize = "packagename_fontSize" // replaced . with _
static let FontType = "packagename_fontType"
static let Theme = "packagename_theme"
}
当字符串包含点时,UserDefaults 肯定出了问题。
我的 UserDefault 观察器过去工作正常,直到我将 forKeyPath 参数替换为字符串 Struct 而不是硬键入它。
以前工作时的样子:
UserDefaults.standard.addObserver(self, forKeyPath: "packagename.fontSize", options: .new, context: nil)
现在如何(不再工作)
UserDefaults.standard.addObserver(self, forKeyPath: UserSavedSettings.FontSize, options: .new, context: nil)
参数改变后的功能:
observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?)
不再调用...
这是我的UserSavedSettings.FontSize声明
struct UserSavedSettings {
static let FontSize = "packagename.fontSize"
static let FontType = "packagename.fontType"
static let Theme = "packagename.theme"
}
有什么办法可以解决这个问题吗?提前致谢!
好吧,似乎 当我删除我的 UserSavedSettings 字符串上的点 时它工作正常。
struct UserSavedSettings {
static let FontSize = "packagename_fontSize" // replaced . with _
static let FontType = "packagename_fontType"
static let Theme = "packagename_theme"
}
当字符串包含点时,UserDefaults 肯定出了问题。