2012-05-25 2 views
1

Как проверить, не удалось ли UIImageView загрузить изображение?Xcode iPhone SDK - проверьте, не удалось ли загрузить UIImageView изображение

У меня есть UIImageView загрузки изображения из URL, как так:

 [MyImageView setImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://exampleUrl.com/images/the_image.png"]]]]; 

но если изображение по какой-то причине не доступна я хочу, чтобы загрузить другое изображение.

Как подойти к этой проблеме? Могу ли я добавить своего наблюдателя?

В качестве альтернативы я могу проверить, когда ImageView закончил загрузку изображения, чтобы проверить, нет ли изображения?

Спасибо!

ответ

3

Вы делаете синхронный запрос в основном потоке и даже не проверяете условия ошибки, например, если они терпят неудачу или время сетевого подключения.

Вы можете использовать это вместо того, чтобы:

[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://exampleUrl.com/images/the_image.png"]] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse* response, NSData* data, NSError* error){ 

if(error) 
{ 
    // Error Downloading image data 
} 
else 
{ 
    [MyImageView setImage:[UIImage imageWithData:data]]; 
} 
}]; 

Использование Asychronous Загрузить URL с помощью NSURLConnection. Когда соединение завершило загрузку данных или возникла ошибка, она уведомляет об этом через блок обработчика соединения.