ios - 如何将数据从两个 UITextView 保存到 UserDefaults

标签 ios swift uitextview userdefaults

对于每个使用 UserDefaultsUITextView,我都创建了一个保存函数和一个显示函数。

无论添加什么text,都需要在添加时显示,保存,然后在再次打开应用时再次显示。

如果我安装的应用程序只有保存功能,退出应用程序并添加要显示的功能,然后重新安装而不删除已安装的应用程序,一切正常。

如果我安装添加了这两个功能的应用程序,它就无法工作。

必须有一个简单的解决方案,我显然做错了什么。

来自一个 textView 的数据用于计算结果,然后将它们显示在另一个 textView 上。 所有数据都是用其他功能添加的,用户没有添加。

    numberHistoryView.isEditable = false
    numberHistoryView.isSelectable = false

func saveHistoryTextView()
{
    let defaults = UserDefaults.standard
    let numberHistory = numberHistoryView.text
    defaults.set(numberHistory, forKey: "combos")
}
func displaySavedHistory()
{
    let defaults = UserDefaults.standard
    let savedCombos = defaults.object(forKey: "combos") as? String ?? ""
    numberHistoryView.text = savedCombos
}

func saveFrequencyTextView()
{
    let defaults = UserDefaults.standard
    let numberFrequency = numberFrequencyCount.text
    defaults.set(numberFrequency, forKey: "frequency")
}
func displaySavedFrequency()
{
    let defaults = UserDefaults.standard
    let savedFrequency = defaults.object(forKey: "frequency") as? String ?? ""
    numberFrequencyCount.text = savedFrequency
}


override func viewWillDisappear(_ animated: Bool)
{
    saveHistoryTextView()
    saveFrequencyTextView()
}
override func viewWillAppear(_ animated: Bool)
{
    displaySavedHistory()
    displaySavedFrequency()
}

最佳答案

这取决于您调用savedisplay 方法的顺序和时间

  1. 当您安装新应用时,UserDefaults 中不会保存任何数据。因此,当您在 viewWillAppear(_:) 中调用 displaySavedHistory()displaySavedFrequency() 方法时,不会获取任何内容,因为尚未保存任何内容。

  2. 现在,当您使用 viewWillDisappear(_:) 中的 saveHistoryTextView()saveFrequencyTextView() 方法保存数据时,然后您终止并再次运行该应用程序,将获取并显示保存的数据。

此外,由于您将数据保存在 UserDefaults 中,而 UserDefaults 保存在 sandbox 中,因此数据不会删除应用程序时仍然存在。如果你想在应用程序删除后保留数据,你必须将数据保存在 iCloudkeychain 等中。

关于ios - 如何将数据从两个 UITextView 保存到 UserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58723836/

相关文章:

ios - 模态表可以在 SwiftUI 中有导航栏吗?

ios - 如何为 UITextView Swift 添加下划线/粗体/斜体功能

ios - 将图像添加到 UITextView

ios - 如何使用swift将可编码结构发送到服务器

ios - XLPagerTabStrip 将水平滚动标签切换为多行标签

ios - 如果我没有 nstring 直接显示它,如何在 UITextView 中显示 HTML 文件?

ios - 使用正则表达式来匹配表情符号以及字符串中的文本

ios - 如何获取特定区域的uitextview文本

ios - Alamofire 图像缓存?

ios - estimatedHeightForRowAtIndexPath 实际上可以更改行的最终 "correct"高度吗?