我從我的tableviewcell中的API加載圖像,它每次向下滾動UITableView時下載圖像。那麼保存這張圖片的最佳方法是什麼?如果它已經存在,它不必再次下載圖片?在UITableViewCell中保存圖像
文本同樣的事情,我怎麼能保存文本......
我從我的tableviewcell中的API加載圖像,它每次向下滾動UITableView時下載圖像。那麼保存這張圖片的最佳方法是什麼?如果它已經存在,它不必再次下載圖片?在UITableViewCell中保存圖像
文本同樣的事情,我怎麼能保存文本......
如果它不是很大,你可以一次下載並保存到用戶的偏好(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提供了關於委託結構的更多細節。
查看iOS站點示例代碼部分中的LazyTableImages示例應用程序。它有一個很好的例子,說明如何使用NSUrlConnection異步調用下載表格單元格的圖像並將圖像(和文本)存儲在NSMutableArray中。
此示例演示多級 方法來加載和顯示一個 UITableView的。它首先從RSS源中加載 相關文本,以便儘可能快地加載 表, ,然後以異步方式爲每個 行下載圖像,以便UI更響應 。
你覺得有多大? – aherlambang 2011-02-18 18:06:26