【发布时间】: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