缺少 UserDefault 值

UserDefault values are missing

我想在 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 的值丢失了

我找到问题了。

SaveSettings() 函数在 myIntmyInt64 的值为 nilmyString 的值为空时调用。不知何故 Value3Value4 在这里被删除了。我猜这是因为它们的值是 nil。但我不确定这是不是确切原因。

当您 运行 您的应用程序时,您在 Value1 中设置的字符串值将被保存,但当应用程序最初 运行s 时,字符串对象没有获得任何值。所以你需要检查 myInt, myString, myInt64 在保存到 UserDefaults.standard.

之前没有得到 nil