3
respostas

deu erro ao tentar o login

Ocorreu um erro no login: keyNotFound(CodingKeys(stringValue: "auth", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: "auth", intValue: nil) ("auth").", underlyingError: nil))

3 respostas

Olá, Mohamad. Tudo bem?

Pelo que parece, o erro que você está enfrentando é comum quando se tenta decodificar um JSON e o modelo de dados Swift não corresponde exatamente ao JSON. O erro está dizendo que não foi possível encontrar uma chave "auth" no JSON que você está tentando decodificar.

Por exemplo, se você tem um modelo de dados como este:

struct User: Decodable {
    let auth: String
}

E está tentando decodificar um JSON como este:

{
    "name": "Mohamad"
}

Você receberá o erro keyNotFound(CodingKeys(stringValue: "auth", intValue: nil), porque não existe uma chave "auth" no JSON.

Para resolver isso, você precisa garantir que o JSON que você está tentando decodificar tenha uma chave "auth". Se essa chave for opcional no seu JSON, você pode definir "auth" como um tipo opcional no seu modelo de dados Swift:

struct User: Decodable {
    let auth: String?
}

Com isso, se a chave "auth" não estiver presente no JSON, o valor será definido como nil em vez de lançar um erro.

Espero ter ajudado. Qualquer coisa manda aqui. Bons estudos!

segue sem ir, porem com um erro novo

Ocorreu um erro no login: keyNotFound(CodingKeys(stringValue: "id", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: "id", intValue: nil) ("id").", underlyingError: nil))

Olá novamente, Mohamad!

Parece que agora o erro está relacionado à chave "id" no JSON. Assim como no caso anterior, o Swift está tentando decodificar um JSON que não contém a chave "id" conforme esperado pelo seu modelo de dados.

Tenta aplicar a mesma lógica para corrigir esse problema. Se a chave "id" no JSON é opcional, você pode modificar seu modelo de dados da seguinte forma:

struct User: Decodable {
    let auth: String?
    let id: String?
}

Dessa forma, se a chave "id" não estiver presente no JSON, o valor será definido como nil em vez de lançar um erro.

Testa as mudanças por favor. Qualquer coisa manda mais detalhes aqui. Valeu.

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