快速奇怪的静态字符串常量行为

时间:2018-09-03 09:23:50

标签: swift string

我要声明两个字符串

public static let FILTER_PERIODS_KEY = "fi_pe"
public static let FILTER_PERIODS_DEFAULT = "M1,M5,M15,M30,H1,H4,D1"

并以这种方式使用它们:

if (preferences.object(forKey: InAppProperties.FILTER_PERIODS_KEY) == nil) {
        preferences.set(InAppProperties.FILTER_PERIODS_DEFAULT, forKey: InAppProperties.FILTER_PERIODS_KEY)
    }

由于某些原因FILTER_PERIODS_KEY不为空,而FILTER_PERIODS_DEFAULT为空。

这是什么?

1 个答案:

答案 0 :(得分:0)

代码看起来正确:FILTER_PERIODS_DEFAULT用作,而FILTER_PERIODS_KEY用作

但是,您为UserDefaults定义默认值的方法是错误的。

尽快(在awakeFromNibapplicationWillFinishLaunching中添加

let defaults = UserDefaults.standard
let defaultValues = [InAppProperties.FILTER_PERIODS_KEY: "M1,M5,M15,M30,H1,H4,D1"]
defaults.register(defaults: defaultValues)

即使值同时更改,每次启动应用程序也必须执行代码。