2013-10-30 10 views
2

В моей ViewController я отправить запрос на URL с помощью блоков:NSURL - получаю сообщение об ошибке

[urlRequest startWithCompletion:^(URLRequest *request, NSData *data, BOOL success) { 
    if (success) 
    { 
     do something 
    } 
    else 
    { 
     NSString *errorMessage = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
     NSLog(@"error %@", errorMessage); 
    } 
}]; 

В классе URLRequest у меня есть метод didFailWithError:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
{ 
     completion(self, webData, NO); 
     NSLog(@"Connection failed! Error - %@", 
     [error localizedDescription]); 
} 

В случае ошибки связи, ' webData 'пуст, поэтому также ошибка errorMessage в ViewController пуста, пока я хотел бы иметь «ошибку» (из класса URLRequest), возвращенную в мой контроллер просмотра, чтобы я мог показать сообщение об ошибке пользователю.

Как я могу это сделать?

Спасибо, Corrado

ответ

3

Я бы не перегружать свой data объект, который будет использоваться как для данных, так и для ошибки. Почему бы вам не сделать свой метод в классе URLRequest больше, как это:

- (void)startWithCompletion:^(URLRequest *request, NSData *data, NSError *error) 

Затем вы можете передать ошибку обратно вызывающей из метода [NSURLConnection :didFailWithError:].

+0

Спасибо. Я, наконец, смог реализовать ваше решение, и он отлично работает! – Corrado

+0

Да, я думаю, вы можете просто использовать обычные указатели на данные и ошибку, так как они передаются в блок завершения. – Macondo2Seattle

Смежные вопросы