如何将数据从两个UITextViews保存到UserDefaults

对于每个使用UITextView的{​​{1}},我都做了一个保存功能和一个显示功能。

添加了UserDefaults的所有内容都需要在添加时显示,保存并在再次打开应用程序时再次显示。

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

如果我安装了同时添加了两个功能的应用程序,它将无法正常工作。

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

来自一个text的数据用于计算结果,然后将其显示在另一个textView上。 所有数据都与其他功能一起添加,用户无需添加。

textView
wosongxiangyi 回答:如何将数据从两个UITextViews保存到UserDefaults

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

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

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

此外,由于您将数据保存在UserDefaults中,并且UserDefaults被保存在sandbox中,因此删除应用程序时数据不会持久。如果要在删除应用程序后仍保留数据,则必须将数据保存在iCloudkeychain等中。

,

您可以使用属性观察器执行以下操作:

var url = source.getUrl() + "#gid=" + newSheet.getSheetId();
,

一旦我以正确的频率使我的大脑进入theta状态,我就设法弄清楚了。

感谢@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()
}
本文链接:https://www.f2er.com/3154726.html

大家都在问