将url追加到图像路径NSString?

时间:2013-04-02 16:17:48

标签: iphone

我正在开发一个iOS应用程序,它包含一个静态sqlite数据库,一系列tableview和基于标签的详细信息视图,其中detailview中加载的第一个视图是一个可加载一系列图像的可跳过的imageView。

我已经使用此代码在本地查找图像,但我想让它从URL加载图像,或者如果没有可用的互联网连接则显示默认图像。

图像在数据库中被命名为(例如)image.jpg,我希望所有图像都从同一个URL目录加载(例如)http://www.someurl.com/images/

谢谢

- (UIImage *) imageAtIndex:(NSUInteger)index {

Image  *currentImage = (Image *) [self.images objectAtIndex:index];

NSString *path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[currentImage filename] stringByDeletingPathExtension]] ofType:@"jpg"];

return [UIImage imageWithContentsOfFile:path];
}

2 个答案:

答案 0 :(得分:0)

这个过程非常简单:

  1. 尝试使用NSURLConnection
  2. 下载图像数据
  3. 如果成功,请从数据
  4. 创建UIImage
  5. 如果上述任何一种方法失败,请切换到占位符/内置图片
  6. 显示生成的图像
  7. 我建议您在下载图片时使用某种占位符,因为这可能需要一段时间。

    不要打扰可达性;它不是100%可靠,而实际尝试下载是。

    避免在后台线程或队列中执行此操作。 NSURLConnection是开箱即用的,可以让您更轻松。如果你愿意,有很多第三方框架试图简化连接工作。

答案 1 :(得分:-1)

NSString *urlStr = [@"http://www.someurl.com/images/" stringByAppendingString:[currentImage filename]];
NSURL *url = [NSURL URLWithString:urlStr];
NSData *imageData = [NSData dataWithContentsOfURL:url];
UIImage *image = [[UIImage alloc] initWithData:data];

或类似的......

如果图像很大或互联网连接速度很慢,NSData初始化可能需要一些时间。考虑在后台线程中获取图像数据,或者使用一些现有框架,如SDWebImage