1
resposta

Duvida em relação a boa prática(Equatable x firstIndex)

Gostaria de tirar uma dúvida, tenho me deparado com vários projetos aplicando models que herdam o protocolo equatable. E no curso é utilizado o firstIndex no momento de dar um unselect na tableView do cadastro de novo item. No meu caso acompanhei o curso implementando as funcionalidades seguindo um contexto um pouco diferente, porém com as mesmas funcionalidades.

extension PersonDetailsViewController: UITableViewDelegate {
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        guard let cell = tableView.cellForRow(at: indexPath) else { return }
        let clickedItemRow = indexPath.row
        if cell.accessoryType == .none {
            cell.accessoryType = .checkmark
            selectedCourses.append(courses[clickedItemRow])
        } else {
            cell.accessoryType = .none
            let course = courses[indexPath.row]
            if let position = selectedCourses.firstIndex(of: course) {
                selectedCourses.remove(at: position)
            }
        }
    }
}

o que tenho visto com bastante frequência normalmente seria neste formato:

extension PersonDetailsViewController: UITableViewDelegate {
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        guard let cell = tableView.cellForRow(at: indexPath) else { return }
        let clickedItemRow = indexPath.row
        if cell.accessoryType == .none {
            cell.accessoryType = .checkmark
            selectedCourses.append(courses[clickedItemRow])
        } else {
            cell.accessoryType = .none
            let course = courses[indexPath.row]
            if let position = selectedCourses.index(of: course) {
                selectedCourses.remove(at: position)
            }
        }
    }
}

e utilizando este index, é necessário haver a implementação do protocolo equatable no model.

func ==(lhs: Item, rhs: Item) -> Bool { ... }

Muitos fóruns dizem que é uma boa prática a implementação deste protocolo, mas no nosso caso não vi esta necessidade. Saberiam me informar se ainda é uma boa prática? E em que casos é adequado aplica-lo, pois isto não ficou tão claro pra mim.

1 resposta

Fala Rodrigo, de boa?

Vi que sua dúvida tá aberta faz um tempinho, queria saber se conseguiu sanar isso e se sim se pode compartilhar conosco

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