2012-04-01 79 views
2

我想以下面的方式加載圖像。但是當我在我的tableView中調用我的loadImageFromURL:(NSURL*)inURL函數作爲[self loadImagesFromURL:url]時,其顯示0字節。 如何得到我的tableview(delta)NSData價值?,這是宣佈爲全球...NSData返回0字節

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

你確定你確實從網址接收數據? – giorashc 2012-04-01 11:35:08

+0

是啊,數據越來越...但無法訪問我的tableview函數中的數據... – 2012-04-01 12:17:38

回答

5

你要通過異步混淆。如果loadImageFromURL:是同步的,例如包裝sendSynchronousRequest:returningResponse:error:,你的代碼會按照你的預期工作; loadImageFromURL:將在提取時阻止,並在填充delta時返回。

但是,這是全部異步的,所以你實際需要做的是在代理中實現connectionDidFinishLoading:(在本例中爲self),並在那裏設置cell.imageView.image

重寫一些代碼的相應的(我假設你在tableView:cellForRowAtIndexPath:去除多餘的代碼,這個例子的目的):

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
    NSURL *urlink=[NSURL URLWithString:[[objectsForImages objectForKey:[arrayOfCharacters objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row]]; 
    [self loadImageFromURL:urlink]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    UIImage *imageForAz=[UIImage imageWithData:delta]; 
    cell.imageView.image=imageForAz; 
} 

退房的URL Loading System Programming Guide on NSURLConnection /詳情例子。

+0

非常感謝您的回覆,但我怎麼來我的connectionDidFinishLoading功能我的tableview單元格?...已聲明細胞作爲全球性的,但其無用的.. :( – 2012-04-01 12:21:11

+0

啊,我想知道你是否會問這個問題。你會想'每個單元'三角洲',並從每個連接開始映射到這兩個。我會盡力爲你挖掘一個例子 – 2012-04-02 06:30:39

+0

...代碼已經寫了一些很基本的誤解,我有點不相信它... – 2012-04-02 06:51:13