Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

tableView.reloadData da crash

Olá, quando adiciono essa linha de código o app fecha dando erro. Só ocorre com esse comando especificamente, todo o resto continua funcionando normalmente.

Segue o código de ambos os Controllers: ViewController -


import UIKit

class ViewController: UIViewController {

    var tableViewController: RefeicoesTableViewController?


    @IBOutlet var nomeTextField: UITextField?
    @IBOutlet weak var felicidadeTextField: UITextField?

    @IBAction func adicionar() {

        guard let nomeDaRefeicao = nomeTextField?.text else { return }
        guard let felicidadeDaRefeicao = felicidadeTextField?.text, let felicidade = Int(felicidadeDaRefeicao) else { return }

        let refeicao = Refeicao(nome: nomeDaRefeicao, felicidade: felicidade)

        print("Comi \(refeicao.nome) e fiquei com felicidade \(refeicao.felicidade)")

        tableViewController?.add(refeicao)
        navigationController?.popViewController(animated: true)

    }
}

RefeicoesTableViewController


import UIKit

class RefeicoesTableViewController: UITableViewController {

    var refeicoes = [Refeicao(nome: "Macarrão", felicidade: 5),
                     Refeicao(nome: "Pizza", felicidade: 4),
                     Refeicao(nome: "Comida Japonesa", felicidade: 5)]

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return refeicoes.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let celula = UITableViewCell(style: .default, reuseIdentifier: nil)
        let refeicao = refeicoes[indexPath.row]
        celula.textLabel?.text = refeicao.nome

        return celula
    }

    func add(_ refeicao: Refeicao) {
        refeicoes.append(refeicao)
        tableView.reloadData()

    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let viewController = segue.destination as? ViewController {
            viewController.tableViewController = self
        }
    }
}
2 respostas
solução!

Revisando o código e as aulas, eu percebi que em Main.storyboard, a minha TableView estava marcada como "static", alterando para "Dinamic" o crash não acontece.

Olá Thiago, como vai?

Opa! Que bacana que conseguiu resolver o problema. Muitas vezes alguma coisinha acaba passando despercebida mesmo.

Obrigada por compartilhar aqui sua solução e contribuir com a comunidade, isso ajuda demais outras alunas e alunos que possam ter o mesmo problema.

Bons estudos por aí! =D

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software