我正在尝试使用UIAlertController将数据保存到UserDefaults,但是代码无法检索数据。
获取数据
func displayCreatedPhrases(){
phrases = uDefaults.stringArray(forKey: "createdPhrases") ?? [String]()
print(phrases)
}
设置数据
self.uDefaults.set(textfield.text, forKey: "createdPhrases")
self.uDefaults.synchronize()
print("Saved the data!")
self.phraseTableView.reloadData()
答案 0 :(得分:1)
原因:
textfield.text
的类型为String?
,而不是[String]
。在代码中,您将数据另存为String
值,并将其检索为[String]
值。这就是原因,检索数据不起作用。
解决方案:
func displayCreatedPhrases(){
phrases = uDefaults.string(forKey: "createdPhrases") ?? ""
print(phrases)
}
此外,phrases
的类型必须为String
。
答案 1 :(得分:1)
您要将string
设置为键“ createdPhrases”的值,然后要求uDefaults返回字符串数组吗?
func displayCreatedPhrases() {
phrases = uDefaults.value(forKey: "createdPhrases") as? String
print(phrases)
}
上面的代码应该对您有用。 同样也不需要使用下面的行(Link to UserDefaults synchronize)
self.uDefaults.synchronize()