gpt4 book ai didi

swift - 尽管已同步,但 Userdefaults 值不会持续存在?

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:53 26 4
gpt4 key购买 nike

我正在利用 UserDefaults 保存一个偶尔需要写入的小值。我相信我已经正确设置了它,但我不确定为什么在我退出模拟器并重新启动它后它不工作。设置:

let defaults = UserDefaults.standard

然后写入/修改如下:

defaults.set(true, forKey: "defaultsChecker")
defaults.synchronize()

使用 print 语句我可以看到该值确实从 nil 更新为 true。但是,在再次打开模拟器(退出后)开始时检查 viewDidLoad 中的值,如下所示:

print("The value is is \((defaults.value(forKey: "defaultsChecker") as! Bool)))")

这总是在开始时返回 nil,这意味着它不能通过关闭和重新打开模拟器来保存/保留。不确定为什么会这样。

最佳答案

不要使用 value(forKey:)UserDefaults 读取 bool 值当你设置 bool 然后使用 bool(forKey:)

let defaults = UserDefaults.standard
defaults.set(true, forKey: "defaultsChecker")
print("The value is is \(defaults.bool(forKey: "defaultsChecker"))")

此处显示了 UserDefaults 中的多种类型的值

enter image description here

而你想获取值,那就试试这个

defaults.integer(forKey: )
defaults.string(forKey: )
defaults.double(forKey: )
defaults.array(forKey: )
defaults.dictionary(forKey: )
defaults.data(forKey: )
defaults.bool(forKey:)

并且无需使用 synchronize() 它们会自动同步。

在你的问题中你试试这个...

if let defaultsChecker =  UserDefaults.standard.object(forKey: "defaultsChecker") as? Bool {
if defaultsChecker {
debugPrint(defaultsChecker)// value has True
} else {
debugPrint(false)// value has False
}
}

关于swift - 尽管已同步,但 Userdefaults 值不会持续存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43840893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com