UserDefaults 不适用于 MSMessagesAppViewController
UserDefaults not working with MSMessagesAppViewController
我正在尝试使用 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()
原因:
textfield.text
的类型是 String?
而不是 [String]
。在您的代码中,您将数据保存为 String
值并将其检索为 [String]
值。这就是原因,检索数据不起作用。
解法:
func displayCreatedPhrases(){
phrases = uDefaults.string(forKey: "createdPhrases") ?? ""
print(phrases)
}
此外,phrases
必须是 String
类型。
您正在将 string
设置为键 'createdPhrases' 的值,然后要求 uDefaults return 一个字符串数组?
func displayCreatedPhrases() {
phrases = uDefaults.value(forKey: "createdPhrases") as? String
print(phrases)
}
以上代码应该适合您。
也不需要使用下面的行 (Link to UserDefaults synchronize)
self.uDefaults.synchronize()
我正在尝试使用 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()
原因:
textfield.text
的类型是 String?
而不是 [String]
。在您的代码中,您将数据保存为 String
值并将其检索为 [String]
值。这就是原因,检索数据不起作用。
解法:
func displayCreatedPhrases(){
phrases = uDefaults.string(forKey: "createdPhrases") ?? ""
print(phrases)
}
此外,phrases
必须是 String
类型。
您正在将 string
设置为键 'createdPhrases' 的值,然后要求 uDefaults return 一个字符串数组?
func displayCreatedPhrases() {
phrases = uDefaults.value(forKey: "createdPhrases") as? String
print(phrases)
}
以上代码应该适合您。 也不需要使用下面的行 (Link to UserDefaults synchronize)
self.uDefaults.synchronize()