Дублирующие узлы Firebase в UITableView - PullRequest
0 голосов
/ 02 сентября 2018

Я создаю приложение со списком задач, задачи которого хранятся в базе данных Firebase. В настоящее время у меня есть одна задача в базе данных, которая отображается в UITableView. Когда приложение загружается в первый раз, оно показывает одну задачу, но затем каждый раз, когда перезагружается представление, задача добавляется дважды. Например, во второй раз отображаются 3 задания, затем 5 и т. Д.

Это функция, которая используется для создания TableViewCells:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    let numberOfCells = taskController.getTodaysTasks().count
    return numberOfCells
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let task = taskController.getTodaysTasks()[indexPath.row]
    let cell = Bundle.main.loadNibNamed("TaskTableViewCell", owner: self, options: nil)?.first as! TaskTableViewCell

    cell.taskTitle.text = task.title
    cell.associatedTask = task

    return cell
}

В TaskController:

func getTodaysTasks() -> [Task] {
    var listToReturn = [Task]()

    for task in taskList {
        let isDueToday = (task.dueDate == dateController.getCurrentDate())
        if isDueToday {
            listToReturn.append(task)
        }
    }

    return listToReturn
}

У меня также есть наблюдатель в базе данных, который обновляет представление таблицы при добавлении новой задачи:

func observeDatabase(_ tableToUpdate: UITableView) {
    taskDatabase.observeSingleEvent(of: .childAdded) { (snapshot) in
        let addedTask = self.createTaskFromSnapshot(snapshot)
        self.taskList.append(addedTask)
        tableToUpdate.reloadData()
    }
}

func createTaskFromSnapshot(_ snapshot: DataSnapshot) -> Task {
    let snapshotValue = snapshot.value as! Dictionary<String, String>

    let taskTitle = snapshotValue["taskTitle"]!

    return Task(title: taskTitle)
}

Единственный раз, когда задача добавляется в taskList, находится в методе наблюдаемых данных ().

Скриншоты дублирующих заданий: enter image description here База данных: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...