Вы не проверяете код состояния ответа, поэтому вполне возможно, что ошибка 404 вернет вам случай .Success
. Все, что делает сериализатор responseData
, это подтверждает, что ошибки не было (которой не будет, поскольку вы не проверяете код состояния ответа) или что данные существуют.
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)
}
}
В вашем случае вы получаете 404, который не выдает ошибку, и сервер возвращает данные. Таким образом, ваш сериализатор responseData
работает успешно. Если вы ожидаете, что ошибка 404 всегда будет выдавать ошибку, вам следует дополнительно использовать метод .validate(statusCode: [200])
перед сериализатором responseData
. Больше информации в разделе проверки README.
В будущем подобные вопросы лучше подходят для Stack Overflow с тегом alamofire
. Мы используем GitHub для ошибок и запросов функций. 🍻
Из нашего руководства по взносам
Мы не используем GitHub в качестве форума поддержки. По любым вопросам использования, не относящимся к самому проекту, задавайте их на Stack Overflow . Поступая таким образом, вы с большей вероятностью быстро решите свою проблему и позволите любому другому человеку, задавшему тот же вопрос, найти ответ. Это также позволяет сопровождающим сосредоточиться на улучшении проекта для других.
я действительно ценю
Я борюсь с этой проблемой... Большое спасибо.
Самый полезный комментарий
Вы не проверяете код состояния ответа, поэтому вполне возможно, что ошибка 404 вернет вам случай
.Success
. Все, что делает сериализаторresponseData
, это подтверждает, что ошибки не было (которой не будет, поскольку вы не проверяете код состояния ответа) или что данные существуют.В вашем случае вы получаете 404, который не выдает ошибку, и сервер возвращает данные. Таким образом, ваш сериализатор
responseData
работает успешно. Если вы ожидаете, что ошибка 404 всегда будет выдавать ошибку, вам следует дополнительно использовать метод.validate(statusCode: [200])
перед сериализаторомresponseData
. Больше информации в разделе проверки README.В будущем подобные вопросы лучше подходят для Stack Overflow с тегом
alamofire
. Мы используем GitHub для ошибок и запросов функций. 🍻Из нашего руководства по взносам
Задавать вопросы
Мы не используем GitHub в качестве форума поддержки. По любым вопросам использования, не относящимся к самому проекту, задавайте их на Stack Overflow . Поступая таким образом, вы с большей вероятностью быстро решите свою проблему и позволите любому другому человеку, задавшему тот же вопрос, найти ответ. Это также позволяет сопровождающим сосредоточиться на улучшении проекта для других.