如何检查UIImageView是否无法加载图像?
我有一个UIImageView从URL加载图像,如下所示:
[MyImageView setImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://exampleUrl.com/images/the_image.png"]]]];
但如果由于某种原因图像不可用,我想加载替代图像。
我如何解决这个问题?我可以添加某种观察者吗?
或者我可以检查ImageView何时完成加载图像以检查图像是否为零?
谢谢!
答案 0 :(得分: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]];
}
}];
使用NSURLConnection使用Asychronous url加载。当连接完成下载数据或发生错误时,它会通过连接处理程序块通知。