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 肯定出了问题。