我正在尝试以下列方式加载图像。但是当我在我的loadImageFromURL:(NSURL*)inURL
中将[self loadImagesFromURL:url]
函数称为tableView
时显示0字节。
如何在(delta)NSData
?中获取tableview
的值,该值被声明为全局...
NSURLConnection* connection;
NSMutableData* delta;
- (void)loadImageFromURL:(NSURL*)inURL {
NSURLRequest *request = [NSURLRequest requestWithURL:inURL];
NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];
if (conn) {
delta = [[NSMutableData data] retain];
}
}
- (void)connection:(NSURLConnection *)conn didReceiveData:(NSData *)data {
[delta appendData:data];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSURL *urlink=[NSURL URLWithString:[[objectsForImages objectForKey:[arrayOfCharacters objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row]];
[self loadImageFromURL:urlink];
UIImage *imageForAz=[UIImage imageWithData:delta];
cell.imageView.image=imageForAz;
}
答案 0 :(得分:5)
你对异步性感到困惑。如果loadImageFromURL:
是同步的,例如包装sendSynchronousRequest:returningResponse:error:
,您的代码将按预期工作; <{1}}会在提取时阻止,并在填充loadImageFromURL:
时返回。
但是,这都是异步的,因此您实际需要做的是在代理中实现delta
(在本例中为connectionDidFinishLoading:
)并在其中设置self
。
相应地重写一些代码(我假设你为了这个例子而删除了cell.imageView.image
中的无关代码):
tableView:cellForRowAtIndexPath:
查看URL Loading System Programming Guide on NSURLConnection了解更多详情/示例。