缺少 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
丢失。但是 Value2
和 Value1
仍然存在。但是 Value2
的值丢失了
我找到问题了。
SaveSettings()
函数在 myInt
和 myInt64
的值为 nil
且 myString
的值为空时调用。不知何故 Value3
和 Value4
在这里被删除了。我猜这是因为它们的值是 nil
。但我不确定这是不是确切原因。
当您 运行 您的应用程序时,您在 Value1 中设置的字符串值将被保存,但当应用程序最初 运行s 时,字符串对象没有获得任何值。所以你需要检查 myInt
, myString
, myInt64
在保存到 UserDefaults.standard
.
之前没有得到 nil
我想在 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
的值丢失了
我找到问题了。
SaveSettings()
函数在 myInt
和 myInt64
的值为 nil
且 myString
的值为空时调用。不知何故 Value3
和 Value4
在这里被删除了。我猜这是因为它们的值是 nil
。但我不确定这是不是确切原因。
当您 运行 您的应用程序时,您在 Value1 中设置的字符串值将被保存,但当应用程序最初 运行s 时,字符串对象没有获得任何值。所以你需要检查 myInt
, myString
, myInt64
在保存到 UserDefaults.standard
.