2015-03-08 69 views
1

我有一個包含UIImageView的單元格的表視圖控制器。我也有一個包含url的NSMutableArray。我想要url的下載圖像並將它們按正確的順序放置。 NSMutableArray還包含一些空字符串和它對應的單元格,我想從我的圖像資源中獲取佔位符圖像。如何在swift中將圖像從數組下載到tableviewcontroller?

我怎樣才能使它工作?我還爲每個單元填充了標題和摘要,但無法鍛鍊圖像的工作方式。

UPDATE

用於圖像下載的代碼。注意photoLabels包含圖像數組。一旦第一個佔位符圖像出現,某些照片位於不正確的位置(這是一個索引遲了)。它爲什麼這樣做。有誰知道爲什麼。我有println(photoLabels)和所有的50個字符串都是正確的(有些只是""

如果任何人都可以提供幫助,那將會很棒。

let imageURL: String = photoLabels.objectAtIndex(indexPath.row) as String 
println(imageURL) 
if imageURL == "" { 
    cell.imageContainer.image = UIImage(named: "placeholder") 
} else { 
    cell.imageContainer.setImageWithURL(NSURL(string: imageURL)) 
} 

return cell 

感謝

+0

您是否確認'photoLabels'數組中的索引完全匹配其他數組中包含其他信息的索引?順便說一句,有一系列獨立的陣列可以打開你的這些斷開連接...... – Rob 2015-03-09 06:54:51

+0

感謝您指出了這一點!在看到我得到的json響應和實際的網站他們是不同的。我仍然不確定他們爲什麼會這樣,但是我重新創建了api,並且一切看起來都很有效。感謝您的幫助和時間。 :) – 2015-03-09 07:57:52

+0

P.S我正在做什麼下載圖像的最佳做法?從我讀過的東西看來,可以這樣下載它們。那是對的嗎? – 2015-03-09 08:06:12

回答

1

這個看似天真的問題其實需要的有趣的細節一個老鼠窩。這些包括:

  • 使用延遲加載的圖像,加載他們的時間,而不是試圖下載他們;
  • 異步下載圖像;
  • 根據需要下載圖像時,緩存它們(使用NSCache而不是NSMutableArray),這樣如果您向後滾動以查看最近下載的一些圖像,您不必再次下載它們;
  • 但是,爲了響應內存壓力,請確保清空基於RAM的高速緩存(但仍利用持久存儲高速緩存);
  • 如果用戶快速滾動到表格示例中的第100行,請確保可見單元格的圖像不會在先前的99個圖像的請求後累積(nb:您應該在次優條件下測試您的應用程序,例如,可以用網絡鏈路調節器模擬的差的2G或3G蜂窩環境);和
  • 您可能需要顯示一個佔位符圖像,直到下載(或從緩存中檢索到)異步檢索的圖像。

底線是,這需要花費很少的努力才能正確完成。因此,我鼓勵您使用現有的解決方案,例如可從SDWebImageAFNetworking獲得的UIImageView類別。這兩個框架都爲UIImageView提供了一個很好的類別,允許您請求異步下載圖像(它是SDWebImage中的sd_setImageWithURL;它是AFNetworking中的setImageWithURL)。

+0

是的,我已經這樣做了,但是當把圖像放在表格中時,一旦有些字符串是空的,它就不是有序的。我使用AFNetworking,一切正常,但將圖像按正確的順序排列。要清楚,圖像通常是正確的順序,但有時它們是1或2個空格。我認爲這可能與應該有我的佔位符的空字符串有關。對不起,不清楚。任何建議 – 2015-03-09 01:51:42

+0

我的建議是你用代碼示例編輯你的問題。我們如何在不看到您所做的事情的情況下就如何解決您的代碼示例提供建議?我很難想象如果您使用AFNetworking的'UIImageView + AFNetworking'類別,圖像可能會關閉。您還必須確認問題出在您的網絡代碼中,還是在模型對象中出現了一些錯誤。 – Rob 2015-03-09 01:55:22

+0

謝謝你。我已經更新了這個問題。 :) – 2015-03-09 06:47:05

相關問題