将 UItextField 输入添加并保存到数组
Add and save UItextField input to array
我有一个接受用户输入的 UIAlertController。我想将用户输入的文本添加到一个数组中,并将该数组保存在用户默认值中。问题是,新输入的文本不断替换之前输入的文本。所以我认为它没有保存在数组中。
这是我到目前为止尝试过的:
func presentAlert() {
let confirmAction = UIAlertAction(title: "Save", style: .default) { (_) in
if let field = alertController.textFields {
// This is how I tried to create the array to hold input text
let textFieldArray = field as [UITextField]
let text = textFieldArray[0].text
var myArray = [""]
myArray.append(String(describing: text!))
UserDefaults.standard.set(myArray, forKey: "Gratitude")
UserDefaults.standard.synchronize()
print(myArray)
} else {
print()
}
}
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (_) in }
alertController.addTextField { (textField) in
//textField.placeholder = ""
}
alertController.addAction(confirmAction)
alertController.addAction(cancelAction)
self.present(alertController, animated: true, completion: nil)
}
这里的错误在于,创建一个全新的数组,追加一个值,然后将其写入 UserDefaults
键 "Gratitude" 下,将 总是 覆盖无论那里有什么,并将其替换为您的单个元素数组。如果您想向 UserDefaults
中存储的数组动态添加其他元素,您必须先访问它:
var myArray = UserDefaults.standard.array(forKey: "Gratitude") ?? []
myArray.append(String(describing: text!))
UserDefaults.standard.set(myArray, forKey: "Gratitude")
print(myArray)
我还建议将您的密钥存储在一个常量中,这样您就可以确保每次请求对象时访问的都是正确的值:
let myArrayKey = "Gratitude"
var myArray = UserDefaults.standard.array(forKey: myArrayKey) ?? []
myArray.append(String(describing: text!))
UserDefaults.standard.set(myArray, forKey: myArrayKey)
print(myArray)
让我知道这是否有意义。
我有一个接受用户输入的 UIAlertController。我想将用户输入的文本添加到一个数组中,并将该数组保存在用户默认值中。问题是,新输入的文本不断替换之前输入的文本。所以我认为它没有保存在数组中。
这是我到目前为止尝试过的:
func presentAlert() {
let confirmAction = UIAlertAction(title: "Save", style: .default) { (_) in
if let field = alertController.textFields {
// This is how I tried to create the array to hold input text
let textFieldArray = field as [UITextField]
let text = textFieldArray[0].text
var myArray = [""]
myArray.append(String(describing: text!))
UserDefaults.standard.set(myArray, forKey: "Gratitude")
UserDefaults.standard.synchronize()
print(myArray)
} else {
print()
}
}
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (_) in }
alertController.addTextField { (textField) in
//textField.placeholder = ""
}
alertController.addAction(confirmAction)
alertController.addAction(cancelAction)
self.present(alertController, animated: true, completion: nil)
}
这里的错误在于,创建一个全新的数组,追加一个值,然后将其写入 UserDefaults
键 "Gratitude" 下,将 总是 覆盖无论那里有什么,并将其替换为您的单个元素数组。如果您想向 UserDefaults
中存储的数组动态添加其他元素,您必须先访问它:
var myArray = UserDefaults.standard.array(forKey: "Gratitude") ?? []
myArray.append(String(describing: text!))
UserDefaults.standard.set(myArray, forKey: "Gratitude")
print(myArray)
我还建议将您的密钥存储在一个常量中,这样您就可以确保每次请求对象时访问的都是正确的值:
let myArrayKey = "Gratitude"
var myArray = UserDefaults.standard.array(forKey: myArrayKey) ?? []
myArray.append(String(describing: text!))
UserDefaults.standard.set(myArray, forKey: myArrayKey)
print(myArray)
让我知道这是否有意义。