2011-02-18 130 views
0

我從我的tableviewcell中的API加載圖像,它每次向下滾動UITableView時下載圖像。那麼保存這張圖片的最佳方法是什麼?如果它已經存在,它不必再次下載圖片?在UITableViewCell中保存圖像

文本同樣的事情,我怎麼能保存文本......

回答

2

如果它不是很大,你可以一次下載並保存到用戶的偏好(NSUserDefaults)作爲NSData對象。適用於我。

或者,您可以使用異步請求與NSUrlConnection並以任何您喜歡的方式實施緩存。 (例如,每週只更新一次圖像。)
此外,即使默認緩存設置爲NSUrlConnection也可能工作得足夠好。
More on caching

編輯
異步請求的一個示例。

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString: url]]; 
URLConnectionDelegate *delegate = ...; 

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request 
                  delegate:delegate]; 

if (!connection) { 
    // something went wrong 
} 

在委託中,您主要需要處理接收數據和完成連接的方法。
假設你有NSMutableData *receivedData對象。

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    [receivedData appendData:data]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    // success, do whatever you want with data 

    [receivedData release]; 
    [connection release]; 
} 

上面的鏈接和API documentation提供了關於委託結構的更多細節。

+0

你覺得有多大? – aherlambang 2011-02-18 18:06:26

2

查看iOS站點示例代碼部分中的LazyTableImages示例應用程序。它有一個很好的例子,說明如何使用NSUrlConnection異步調用下載表格單元格的圖像並將圖像(和文本)存儲在NSMutableArray中。

此示例演示多級 方法來加載和顯示一個 UITableView的。它首先從RSS源中加載 相關文本,以便儘可能快地加載 表, ,然後以異步方式爲每個 行下載圖像,以便UI更響應 。