【问题标题】:Fast Downloading image from url从 url 快速下载图片
【发布时间】:2016-06-23 16:26:06
【问题描述】:

我正在使用 Soap API,它会在我存储在 SQLite 数据库中的 XML 文件中返回一个响应。该 xml 文件由图像 url 组成,这些图像我正在下载并将它们存储到本地文件夹中。但是下载需要很长时间才能下载并存储在本地文件夹中。现在我想要的是快速下载的逻辑并将它们存储在本地文件夹中。

这是我的代码:

 if (categoryArray.count > 0)
    NSString *stringPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,   NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"WordImages"];
    NSError *error = nil;
    if (![[NSFileManager defaultManager] fileExistsAtPath:stringPath])
        [[NSFileManager defaultManager] createDirectoryAtPath:stringPath  withIntermediateDirectories:NO attributes:nil error:&error];
    NSString *fileName = [stringPath stringByAppendingPathComponent:[NSString stringWithFormat:@"Image%lu.jpg",(unsigned long)categoryTitleArray.count]];
    NSString *imgUrl = [categoryArray objectAtIndex:0];
    imgUrl = [imgUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSData *data = [NSData dataWithContentsOfURL:[NSURL  URLWithString:imgUrl]];
    [data writeToFile:fileName atomically:YES];
 categoryArray = [[NSMutableArray alloc]init];
    [imageArray addObject:fileName];

【问题讨论】:

  • 为什么要在本地存储图片,你尝试实现一个缓存功能?
  • 虽然你的问题不是很清楚,但这行代码看起来很邪恶[NSData dataWithContentsOfURL:[NSURL URLWithString:imgUrl]]。研究后台操作来修复它。
  • 在任何情况下都使用异步模式下载数据,它可以提供更好的用户体验并且不会阻塞线程。

标签: ios objective-c iphone


【解决方案1】:

您可以使用 sdwebimage 库,它将下载图像并将其缓存。

Check my Answer here

【讨论】:

  • 是的。您需要将 sdwebimage 文件导入到您的项目中
  • 如果我的回答解决了你的问题,我想你可以接受。
  • 它会很快,因为它会缓存这些图像。
  • 你需要在屏幕上显示图片,这样你就可以保存图片的图片url。保存这些网址后,您可以使用以下代码在屏幕上显示图像时使用它们 [YOUR IMAGEVIEW setImageWithURL:[NSURL URLWithString:@"IMAGE URL"] placeholderImage:[UIImage imageNamed:@"PLACEHOLDER IMAGE NAME"]] ;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-30
  • 2015-09-15
  • 2021-03-10
  • 1970-01-01
  • 2018-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多