对于每个使用UITextView
的{{1}},我都做了一个保存功能和一个显示功能。
添加了UserDefaults
的所有内容都需要在添加时显示,保存并在再次打开应用程序时再次显示。
如果我仅安装了要保存的功能的应用程序,请退出该应用程序并添加要显示的功能,然后重新安装而不删除已安装的应用程序,一切正常。
如果我安装了同时添加了两个功能的应用程序,它将无法正常工作。
必须有一个简单的解决方案,我显然做错了。
来自一个text
的数据用于计算结果,然后将其显示在另一个textView
上。
所有数据都与其他功能一起添加,用户无需添加。
textView
答案 0 :(得分:0)
这取决于您调用save
和display
方法的顺序和时间。
在安装新应用时,UserDefaults
中将不会保存任何数据。因此,当您在displaySavedHistory()
中调用displaySavedFrequency()
和viewWillAppear(_:)
方法时,将不会获取任何内容,因为尚未保存任何内容。
现在,当您在saveHistoryTextView()
中使用saveFrequencyTextView()
和viewWillDisappear(_:)
方法保存数据,然后再次杀死并运行该应用程序时,将获取并显示保存的数据
此外,由于您将数据保存在UserDefaults
中,并且UserDefaults
被保存在sandbox
中,因此删除应用程序时数据不会持久。如果要在删除应用程序后仍保留数据,则必须将数据保存在iCloud
或keychain
等中。
答案 1 :(得分:-1)
您可以使用属性观察器执行以下操作:
var url = source.getUrl() + "#gid=" + newSheet.getSheetId();
答案 2 :(得分:-1)
一旦我以正确的频率使我的大脑进入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()
}