【发布时间】:2020-08-23 14:02:40
【问题描述】:
我在这里定义我的 UserDefaults 值。下次启动时,我的应用程序会打开正确的窗口。但我也想在设置后立即更新 UserDefaults。这样我现在就可以使用它们了。
let defaults = UserDefaults.standard
@IBAction func pressed(_ sender: UIButton) {
switch team {
case "bayernMunchen":
defaults.set(46, forKey: "MannschaftsAuswahl")
UserDefaults.standard.synchronize()
case "borussiaDortmund":
defaults.set(41, forKey: "MannschaftsAuswahl")
UserDefaults.standard.synchronize()
case "schalke":
defaults.set(45, forKey: "MannschaftsAuswahl")
UserDefaults.standard.synchronize()
default: print(8)
}
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "WeatherViewController") as! WeatherViewController
self.present(nextViewController, animated:true, completion:nil)
}
我上面的代码打开了另一个窗口,我尝试用这个来获取值:
let defaults = UserDefaults.standard
var cityName = defaults.integer(forKey: "MannschaftsAuswahl")
print(cityName)
但它没有显示更新的值。正如我所说,我需要关闭并打开应用程序。 设置后如何更新 UserDefaults?
【问题讨论】:
-
有一个
synchronize函数用于UserDefaults -
您的代码没问题,所以肯定还有更多您没有告诉我们的事情发生。但不要使用 UserDefaults 将值传递给下一个视图控制器。将值本身直接传递给新的视图控制器。
-
我必须纠正自己。同步不起作用。我就是这么想的。我不知道我做错了什么。我更新了上面的代码。
-
matt 我不知道如何为函数中的变量设置值。我读到这不起作用。
-
koropok 谢谢你,但没用。