Удаление словарного объекта с условием - Firebase - Swift - PullRequest
0 голосов
/ 04 января 2019

В моем приложении мне нужно перечислить информацию, зарегистрированную пользователем, есть поле «включить», где «on» не будет отображаться в tableViewController, если «да» будет перечислять, код ниже для справки. Первый элемент не должен отображаться. Спасибо.

Изображение таблицы ViewController

let snapshot = self.listaDadosCombustivel[indexPath.row]
let key = snapshot.key 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "celulaDados", for: indexPath) as! CadastroDadosCell        

    let snapshot = self.listaDadosCombustivel[indexPath.row]
    let key = snapshot.key
    let snapshotAnterior = self.listaDadosCombustivel[indexPath.row.littleEndian]
    self.idCadCombustivelAnterior = snapshotAnterior.key

    if var dados = snapshot.value as? [String : Any]{
        if let enable = dados["enable"] as? String{
            if enable == "yes"{
                if let dataAbastecimento = dados["dataAbastecimento"] as? String{
                    if let valorTotal = dados["valorTotal"] as? String{
                        if let litrosTotal = dados["litroTotal"] as? String{
                            if let kmAtual = dados["kmAtual"] as? String{
                                if let combustivel = dados["combustivel"] as? String{
                                    if let consumo = dados["consumo"] as? String{
                                        cell.dataLabel.text = dataAbastecimento
                                        cell.valorTotalLabel.text = valorTotal
                                        cell.litrosTotalLabel.text = litrosTotal
                                        cell.combustivelLabel.text = combustivel
                                        cell.kmVeiculoLabel.text = kmAtual
                                        cell.kmLitroLabel.text = consumo
                                    }
                                }
                            }
                        }
                    }
                }
            }else{
                print(key)
            }
        }            
    }
    return cell
}

1 Ответ

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

Если я вас правильно понимаю, и вы просто хотите удалить отключенные данные, то вы можете начать с того, что ваша модель данных будет содержать только включенные элементы, потому что она нужна вам в методе func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {}, чтобы не показывать пустые ячейки.

Так что, возможно, сделайте что-то подобное при загрузке данных:

let filteredDadosCombustivelSnapshots = self.listaDadosCombustivel.filter { snapshot in
            if let dados = snapshot.value as? [String : Any], let enable = dados["enable"] as? String, enable == "yes" {
                return true
            }

            return false
        }

А затем вместо этого используйте в вашем коде FilterDadosCombustivelSnapshots.

Другое решение - просто сохранить исходные данные, а написать метод, который возвращает правильное количество включенных элементов, которые вы можете использовать в func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {}, например:

func numberOfEnabledDados() -> Int {
    return self.listaDadosCombustivel.filter { snapshot in
                    if let dados = snapshot.value as? [String : Any], let enable = dados["enable"] as? String, enable == "yes" {
                        return true
                    }

                    return false
                }.count
    }

и использовать:

 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return numberOfEnabledDados()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...