我有一个对象数组。我的对象包含一个 URL( NSString
) 和一个图像 ( UIImage
)。我调用一个网络服务来填充图像的所有 url,然后我想异步获取图像并用图像更新对象。
当我试图确定从 URLConnection 接收到数据时需要更新的数组索引时,我被卡住了。有什么想法吗?
我有一个对象数组。我的对象包含一个 URL( NSString
) 和一个图像 ( UIImage
)。我调用一个网络服务来填充图像的所有 url,然后我想异步获取图像并用图像更新对象。
当我试图确定从 URLConnection 接收到数据时需要更新的数组索引时,我被卡住了。有什么想法吗?
您需要将 NSURLConnection 映射到您的数组。您可以将 NSURLConnection 子类化以添加成员,从而允许存储标签标识符,例如索引。
可能创建一个 NSDictionary 会更简单,其中每个 NSURLConnection 充当键,NSNumber 中的 arrayIndex 将作为值存储。
在您使用的回调方法中,您可以使用相应的 NSURLConnection 作为其键来访问您的字典。
int arrayIndex = [[myDictionary objectForKey:urlConnection] intValue]
要从网络获取 UIImage,请多次使用它而不是 URLConnection。
UIImage *image=[[UIImage alloc]initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"URL of the image"]]];
然后在 UIImageView 中异步加载您的图像。
我建议您使用 GCD 在后台下载图像。如果您想参考,这里是教程:- http://blog.slaunchaman.com/2011/02/28/cocoa-touch-tutorial-using-grand-central-dispatch-for-asynchronous-table-view-cells /
以下是您可以使用的代码:-
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
dispatch_sync(dispatch_get_main_queue(), ^{
[yourImageView setImage:image];
});
});