Я выполняю простой запрос на получение с помощью метода Apple NSURLSession # dataTaskWithURL
[[mySession dataTaskWithURL:myUrl completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// fancy code goes here...
}] resume];
Если я хочу иметь условие, чтобы что-то сделать, ЕСЛИ код состояния был успешным, похоже, что я должен передать NSURLResponse как NSHTTPURLResponse .....
NSUInteger statusCode = ((NSHTTPURLResponse *)response).statusCode;
if (!error && statusCode == 200) {
// even fancier code goes here
} else {
// omg!!!!!!!!!
}
...
Но ---------- Мой вопрос: ПОЧЕМУ!?!?!?!?!?!?!?
Зачем Apple передавать объект ответа, приведенный к типу, который не знает своего статуса ?! Тот факт, что мне пришлось написать этот код, заставляет меня думать, что я делаю что-то очень не так, и должен быть лучший способ узнать, было ли это 200, 404 или 500 ...
Я надеялся, что смогу просто изменить типы аргументов блока завершенияHandler на NSHTTPURLResponse, но это оказалось бесполезным!