【发布时间】:2013-07-02 10:12:43
【问题描述】:
我正在尝试使用 UICollectionView 创建一个图片库。但是 dispatch_queue 似乎没有下载图像,而是跳过下载并继续执行下一条语句。
下面是我的代码:
for(int i=0;i<[_urlArray count];i++){
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0), ^{
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",[_urlArray objectAtIndex:i]]];
NSData *data = [NSData dataWithContentsOfURL:url];
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
path = [path stringByAppendingString:[NSString stringWithFormat:@"%d.png",i]];
NSLog(@"img data %@",data);
[data writeToFile:path atomically:YES];
UIImage *theImage=[UIImage imageNamed:path];
[_imgArray addObject:theImage];
dispatch_async(dispatch_get_main_queue(), ^{
});
});
}
我什至尝试过 AFNetworking 和 SDWebImage。但没有帮助我。请帮我解决一下这个。谢谢你。
【问题讨论】:
-
它是否执行到 NSData *data?如果它正在执行到该行,则检查数据是否存储在文档目录中。
-
不,它根本没有下载。它跳过下一条语句。
-
它通常会下载 dispatch_queue 将在几秒钟后执行,因此将断点放在 NSURL *url 之后的 dispatch_queue 中,它肯定会执行它不应该跳过。
-
是的,我在尝试打印数据时得到一个空值。添加断点后,它说变量不是 NSData。
-
k 检查您获得的网址是否正确。 [NSString stringWithFormat:@"%@",[_urlArray objectAtIndex:i] 这个字符串你复制粘贴到浏览器中,然后在浏览器中加载url,检查图片是否存在。
标签: ios6 uicollectionview image-caching