UserDefault值缺失

时间:2017-08-21 07:21:31

标签: swift3 userdefaults

我想在UserDefaults中保存一些值。我正在使用此代码保存

func SaveSettings(){
    let def = UserDefaults.standard
    def.set("test", forKey: "Value1")
    def.set(myString, forKey: "Value2") //value: test1
    def.set(myInt, forKey: "Value3")    //value: 25
    def.set(myInt64, forKey: "Value4")  //value: 103254
    def.synchronize() //I've tried to remove this line
}

保存后,我使用此代码来控制我的值是保存在UserDefaults还是

 for (key, value) in UserDefaults.standard.dictionaryRepresentation() {
      print("\(key) = \(value) \n")
 }

看到这个结果

{
   Value1 = test
   Value2 = test1
   Value3 = 25
   Value4 = 103254
}

现在还没有任何问题。但是在我重新启动应用程序并查看UserDefaults中的值后,我看到了这个结果

{
   Value1 = test
   Value2 =
}

如您所见,Value3广告Value4丢失了。但是Value2Value1会停留。但Value2的值缺失

2 个答案:

答案 0 :(得分:0)

我发现了问题。

SaveSettings()myInt的值为myInt64nil的值为空时,

myString func已调用。不知何故,此处删除了Value3Value4。我想这是因为它们的价值是nil。但我不确定这是不是确切的原因。

答案 1 :(得分:0)

当您运行应用程序时,您在Value1中设置的字符串值将被保存,但字符串对象在应用程序最初运行时未获取任何值。因此,在保存到myInt之前,您需要检查myStringmyInt64UserDefaults.standard是否为零。