对于每个使用 UserDefaults
的 UITextView
,我都创建了一个保存函数和一个显示函数。
无论添加什么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()
}
最佳答案
这取决于您调用save
和display
方法的顺序和时间。
当您安装新应用时,
UserDefaults
中不会保存任何数据。因此,当您在viewWillAppear(_:)
中调用displaySavedHistory()
和displaySavedFrequency()
方法时,不会获取任何内容,因为尚未保存任何内容。现在,当您使用
viewWillDisappear(_:)
中的saveHistoryTextView()
和saveFrequencyTextView()
方法保存数据时,然后您终止并再次运行该应用程序,将获取并显示保存的数据。
此外,由于您将数据保存在 UserDefaults
中,而 UserDefaults
保存在 sandbox
中,因此数据不会删除应用程序时仍然存在。如果你想在应用程序删除后保留数据,你必须将数据保存在 iCloud
或 keychain
等中。
关于ios - 如何将数据从两个 UITextView 保存到 UserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58723836/