首页 > 解决方案 > 如何将数据从两个 UITextViews 保存到 UserDefaults

问题描述

对于每个UITextViewusing UserDefaults,我都制作了一个保存功能和一个显示功能。

添加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()
}

标签: iosswiftuitextviewuserdefaults

解决方案


一旦我以正确的频率将大脑置于θ状态,我就设法弄清楚了。

感谢@Naresh 和所有其他贡献者的帮助,因为您可能对我有所帮助。

该解决方案基本上只需要一个简单的 if 语句。

现在一切正常。

func saveHistoryTextView()
{
    if numberHistoryView.text?.count != nil
    {
        let defaults = UserDefaults.standard
        defaults.set(numberHistoryView.text!, forKey: "combos")
    }
}
func displaySavedHistory()
{
    let defaults = UserDefaults.standard
    if let savedCombos = defaults.string(forKey: "combos")
    {
        numberHistoryView.text = savedCombos
    }
}

func saveFrequencyTextView()
{
    if numberFrequencyCount.text?.count != nil
    {
        let defaults = UserDefaults.standard
        defaults.set(numberFrequencyCount.text!, forKey: "frequency")
    }
}
func displaySavedFrequency()
{
    let defaults = UserDefaults.standard
    if let savedFrequency = defaults.string(forKey: "frequency")
    {
        numberFrequencyCount.text = savedFrequency
    }
  }
}


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

推荐阅读