我想在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
丢失了。但是Value2
和Value1
会停留。但Value2
的值缺失
答案 0 :(得分:0)
我发现了问题。
当SaveSettings()
和myInt
的值为myInt64
且nil
的值为空时, myString
func已调用。不知何故,此处删除了Value3
和Value4
。我想这是因为它们的价值是nil
。但我不确定这是不是确切的原因。
答案 1 :(得分:0)
当您运行应用程序时,您在Value1中设置的字符串值将被保存,但字符串对象在应用程序最初运行时未获取任何值。因此,在保存到myInt
之前,您需要检查myString
,myInt64
,UserDefaults.standard
是否为零。