我创建了一个ToDo列表应用程序,我在一个视图控制器中输入任务,它将数据保存在另一个视图控制器的数组中,然后将其添加到表中。我唯一的问题是当我关闭应用程序时,我的所有新任务数据都消失了。有人可以帮忙吗?
我尝试使用UserDefaults,但它没有很好地工作,或者我没有正确使用它。
这是我输入新任务的视图控制器中的代码:
@IBAction func addTaskButton(_ sender: Any)
{
if (textField.text != "") {
Task.append(textField.text!)
let task = UserDefaults.standard.set(Task, forKey: "XX")
textField.text = ""
textLabel.text = "SAVED!"
timer = Timer.scheduledTimer(timeInterval: 1.6, target: self, selector: #selector(AddTaskViewController.Hide), userInfo: nil, repeats: true)
textLabel.isHidden = false
}
}
这是视图控制器中的代码,我尝试保存数据并将其放在表格中
var Task = ["Pray", "Code", "Work-Out"]
var School = ["Email Collin College","Email PQC","Create file for all my doccumensts"]
var ShoppingList = ["KD9 Black","RoshRun Black","Nike Huarache Black","White Shirt","Black Shirt", "Black Work Out pnats", "White Socks"]
var Prayer = ["School","Family","Drive & Grace"]
var WorkOut = ["Legs","Caffs","Push Ups","Arms","Chest Press","Squats", "Back"]
class add_Task_TableViewController: UIViewController,UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var TaskTableView: UITableView!
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return (Task.count)
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "Cell")
cell.textLabel?.text = Task[indexPath.row]
return(cell)
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath)
{
if editingStyle == UITableViewCellEditingStyle.delete
{
Task.remove(at: indexPath.row)
TaskTableView.reloadData()
}
}
override func viewDidAppear(_ animated: Bool) {
TaskTableView.reloadData()
}
答案 0 :(得分:0)
您可以将SQLITE用作维护草稿消息或值的数据库,以便以后再次打开应用程序时使用。
答案 1 :(得分:0)
您可以使用userDefaults保存待办事项列表。但是你缺少的是你正确存储,但你没有从userDefaults中恢复存储的数组。
要解决此问题,只需将viewDidAppear方法更改为以下代码段。
override func viewDidAppear(_ animated: Bool) {
Task = UserDefaults.standard.stringArray(forKey: "XX") ?? [String]()
TaskTableView.reloadData()
}