使用swift 3

时间:2017-08-23 06:25:23

标签: ios swift uitableview

我创建了一个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()
    }

2 个答案:

答案 0 :(得分:0)

您可以将SQLITE用作维护草稿消息或值的数据库,以便以后再次打开应用程序时使用。

答案 1 :(得分:0)

您可以使用userDefaults保存待办事项列表。但是你缺少的是你正确存储,但你没有从userDefaults中恢复存储的数组。

要解决此问题,只需将viewDidAppear方法更改为以下代码段。

override func viewDidAppear(_ animated: Bool) {
    Task = UserDefaults.standard.stringArray(forKey: "XX") ?? [String]()
    TaskTableView.reloadData()
}