0

我想将一些值保存在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的价值缺失

4

2 回答 2

0

我发现了问题。

SaveSettings()func 调用了 whenmyIntmyInt64的值是nil并且myString的值是空的。不知何故Value3Value4在这里被删除。我猜这是因为它们的价值是nil. 但我不确定这是不是确切的原因。

于 2017-08-21T08:49:30.643 回答
0

当您运行您的应用程序时,您在 Value1 中设置的字符串值将被保存,但是当应用程序最初运行时,字符串对象没有获得任何值。myInt因此,您需要myStringmyInt64保存到UserDefaults.standard.

于 2017-08-21T10:06:04.313 回答