Элемент продолжает добавляться в Tableview, даже если он есть в моей БД - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть этот код, и я вызываю его каждый раз, когда нажимаю на кнопку и вызываю другой view-контроллер, где я вызываю fetchVinylData внутри viewWillappear. Проблема в том, что каждый раз, когда я нажимаю кнопку, чтобы перейти к этому VC, он добавляет один элемент к табличному представлению, даже если у меня есть только один в моей базе данных. Я предполагаю, потому что мой массив продолжает подпитываться, даже если в моей базе данных есть только одна запись .Как я удаляю из своего массива, чтобы я не получал много значений в моем tableView только те, которые сохранены в моей базе данных Firebase? Я пытался добавить myArray.removeAll () в fetchrequest, прежде чем я загружаю винил в массив, но мое приложение падает в конце концов

func fetchVinylData() {
    SVProgressHUD.show()
    guard let currentUID = Auth.auth().currentUser?.uid else { return }

    dbRef.child("vinylsOUT").child(currentUID).observe(.childAdded) { (snapshot) in
        guard let dictionary = snapshot.value as? Dictionary<String,AnyObject> else { return }
        let vinyl = Vinyl(dictionary: dictionary)

        self.vinyls.append(vinyl)
        self.vinyls.sort(by: { (vinyl1, vinyl2) -> Bool in
            return vinyl1.artist < vinyl2.artist
        })
        self.tableView.reloadData()
    }
    SVProgressHUD.dismiss()
}

Большое спасибо

1 Ответ

0 голосов
/ 04 апреля 2019

Вы добавляете в свой массив каждый раз, когда получаете данные из Firebase: - self.vinyls.append (винил)

Вы можете просто переопределить ваш текущий массив винилов, выполнив:

self.vinyls = [Vinyl]()

прежде чем вы получите новые данные из Firebase. Это будет выглядеть так:

func fetchVinylData() {
    SVProgressHUD.show()
    guard let currentUID = Auth.auth().currentUser?.uid else { return }

    self.vinyls = [Vinyl]() // <- here you reset the array 

    dbRef.child("vinylsOUT").child(currentUID).observe(.childAdded) { (snapshot) in
        guard let dictionary = snapshot.value as? Dictionary<String,AnyObject> else { return }
        let vinyl = Vinyl(dictionary: dictionary)

        self.vinyls.append(vinyl)
        self.vinyls.sort(by: { (vinyl1, vinyl2) -> Bool in
            return vinyl1.artist < vinyl2.artist
        })
        self.tableView.reloadData()
    }
    SVProgressHUD.dismiss()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...