1
resposta

Como corrigir o searchBar após ter implementado o PacoteViagemDao erro: Thread 1: signal SIGABRT

Eu estava com problema para realizar a busca com search bar então foi feito o fix com:

class Viagem: NSObject {
   @objc let titulo: String
   let quantidadeDeDias: String
   let preco: String
   let caminhoDaImagem: String

    init(titulo: String, quantidadeDeDias: String, preco:String, caminhoDaImagem:String){
        self.titulo = titulo
        self.quantidadeDeDias = quantidadeDeDias
        self.preco = preco
        self.caminhoDaImagem = caminhoDaImagem
    }
}

Mas após ter implementado a tela de detalhes da viagem e inserido o PacoteViagemDao com sucesso o problema de Thread 1: signal SIGABRT no SearchBar retornou.

O crash ocorre na linha: let listaFiltrada:Array = (listaViagens as NSArray).filtered(using: filtroListaViagem) as! Array

    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
      //  print(searchBar.text!)
        listaViagens = listaComTodasAsViagens
        if searchText != "" {
            let filtroListaViagem = NSPredicate(format: "titulo contains[cd] %@", searchText)
            let listaFiltrada:Array<PacoteViagem> = (listaViagens as NSArray).filtered(using: filtroListaViagem) as! Array
            listaViagens = listaFiltrada
        }
        self.labelContadorPacotes.text = self.atualizaContador()
        colecaoPacotesViagem.reloadData()
    }
1 resposta

Oi Victor, tudo bem?

Pode ser algum problema de compatibilidade com o Swift. Tenta realizar o filtro, utilizando o filterdo array:

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
        listaViagens = listaComTodasViagens
        if searchText != "" {
            listaViagens = listaViagens.filter({ $0.viagem.titulo.contains(searchText) })
        }
        colecaoPacotesViagem.reloadData()
    }

Tenta implementar esse código, qualquer coisa me avisa...

Abraço.