Você não está validando o código de status da resposta, portanto, é possível que um 404 retorne um caso .Success
. Tudo o que o serializador responseData
faz é validar que não houve um erro (o que não haverá porque você não está validando o código de status da resposta) ou que os dados existem.
public static func dataResponseSerializer() -> ResponseSerializer<NSData, NSError> {
return ResponseSerializer { _, _, data, error in
guard error == nil else { return .Failure(error!) }
guard let validData = data where validData.length > 0 else {
let failureReason = "Data could not be serialized. Input data was nil or zero length."
let error = Error.errorWithCode(.DataSerializationFailed, failureReason: failureReason)
return .Failure(error)
}
return .Success(validData)
}
}
No seu caso, você está recebendo um 404 que não está gerando um erro e o servidor está retornando dados. Portanto, seu serializador responseData
é bem-sucedido. Se você espera que um 404 sempre gere um erro, você deve usar adicionalmente o método .validate(statusCode: [200])
antes do serializador responseData
. Mais informações na Seção de Validação do README.
No futuro, perguntas como essa são mais adequadas para o Stack Overflow com uma tag alamofire
. Usamos o GitHub para bugs e solicitações de recursos. 🍻
De nossas Diretrizes de Contribuição
Não usamos o GitHub como fórum de suporte. Para qualquer dúvida de uso que não seja específica do projeto em si, pergunte no Stack Overflow . Ao fazer isso, você terá mais chances de resolver seu problema rapidamente e permitirá que qualquer outra pessoa com a mesma pergunta encontre a resposta. Isso também permite que os mantenedores se concentrem em melhorar o projeto para outros.
eu realmente aprecio
Estou lutando com este problema... Muito obrigado.
Comentários muito úteis
Você não está validando o código de status da resposta, portanto, é possível que um 404 retorne um caso
.Success
. Tudo o que o serializadorresponseData
faz é validar que não houve um erro (o que não haverá porque você não está validando o código de status da resposta) ou que os dados existem.No seu caso, você está recebendo um 404 que não está gerando um erro e o servidor está retornando dados. Portanto, seu serializador
responseData
é bem-sucedido. Se você espera que um 404 sempre gere um erro, você deve usar adicionalmente o método.validate(statusCode: [200])
antes do serializadorresponseData
. Mais informações na Seção de Validação do README.No futuro, perguntas como essa são mais adequadas para o Stack Overflow com uma tag
alamofire
. Usamos o GitHub para bugs e solicitações de recursos. 🍻De nossas Diretrizes de Contribuição
Fazendo perguntas
Não usamos o GitHub como fórum de suporte. Para qualquer dúvida de uso que não seja específica do projeto em si, pergunte no Stack Overflow . Ao fazer isso, você terá mais chances de resolver seu problema rapidamente e permitirá que qualquer outra pessoa com a mesma pergunta encontre a resposta. Isso também permite que os mantenedores se concentrem em melhorar o projeto para outros.