您是不是能够跨不同的视图控制器/.swift 文件检索存储在 UserDefaults 中的数据?

Posted

技术标签:

【中文标题】您是不是能够跨不同的视图控制器/.swift 文件检索存储在 UserDefaults 中的数据?【英文标题】:Are you able to retrieve data stored in UserDefaults across different View Controllers/.swift files?您是否能够跨不同的视图控制器/.swift 文件检索存储在 UserDefaults 中的数据? 【发布时间】:2020-02-16 23:39:06 【问题描述】:

我创建了一个字符串值并将其存储在一个视图控制器上的 UserDefault 中,如下所示:

letSwimmerOneName = "John"

UserDefaults.standard.set(String(swimmerOneName), forKey: "twoFreelayNameOne

我正在尝试在不同的视图控制器上检索该数据,如下所示:

var swimmerOneName = UserDefaults.standard.string(forKey: "twoFreelayNameOne")

我没有收到任何错误或崩溃,只是根本不起作用。所以我想知道 UserDefaults 是在整个项目中传输还是留在创建它们的视图控制器中。

【问题讨论】:

它确实适用于整个项目。是什么让你说“它根本行不通”? 我有一个变量来存储输入到文本字段中的字符串。然后,我将该变量全部存储在一个视图控制器上的 UserDefault 中。在第二个视图控制器上,我检索该 UserDefault 值并尝试将其设置为标签的文本。不幸的是,标签没有显示我尝试存储在 UserDefault 中的那个字符串。我试图在标签上显示字符串的方式很可能是问题吗? 你可以测试一下。在设置成UserDefaultsprint(String(swimmerOneName))之前和检索之后使用print(swimmerOneName)。结果如何? 我试过了,没有任何东西打印到控制台。我什至尝试过:打印(“这有效吗?”)。这也没有出现在控制台中...... 那作为另一个问题问吧。 不要只编辑这个问题。 【参考方案1】:

您可以跨不同的视图控制器检索存储在 UserDefaults 中的数据。我的问题是在我放置 UserDefaults 的位置以及我声明要分配此 UserDefault 值的变量的方式上创建的。 TLDR:格式草率。

【讨论】:

以上是关于您是不是能够跨不同的视图控制器/.swift 文件检索存储在 UserDefaults 中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

跨多个视图控制器共享背景图像

Xcode(Swift):我无法在视图控制器之间传输数据

在 Swift 中跨多个选项卡访问相同的视图模型

在 Swift 中单击以编程方式切换到 TableViewCell 上的导航视图

在故事板中添加新的视图控制器后是不是需要手动添加 ViewController.swift 文件?

将数据从一个视图控制器传递到下一个视图控制器,而无需在 swift 中进行 segue