Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao usar NSPredicate

[ valueForUndefinedKey:]: this class is not key value coding-compliant for the key titulo.'

To com esse erro ao digitar algo na barra de pesquisa.

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

       viagensFiltro = viagens

        if searchText != "" {
            let filtro = NSPredicate(format: "titulo contains[c] %@", searchText)
            let filtrados: Array<Viagem> = (viagens as NSArray).filtered(using: filtro) as! Array
            viagensFiltro = filtrados
        }

        atualizarContador()
        colecaoPacotes.reloadData()
    }

class Viagem: NSObject {
    let titulo: String
    let dias: Int
    let preco: String
    let caminhoImagem: String

    init(titulo: String, dias: Int, preco: String, caminhoImagem: String) {
        self.titulo = titulo
        self.dias = dias
        self.preco = preco
        self.caminhoImagem = caminhoImagem
    }
}
1 resposta
solução!

Oi Lohan, tudo bem?

O problema é porque a partir da versão 4 do Swift, ele não reconhece implementações de objective C automaticamente.

Para resolver esse problema, basta colocar @objc antes do título na classe Viagem.

Ficaria assim:

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

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

Testa aí, qualquer dúvida pode mandar aqui no fórum.

Abs.

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