2016-10-05 52 views
3

我在cellForRowAt功能下面的代碼:如何設置默認圖像時IMAGEURL是空的使用SDWebImage - 斯威夫特

let url = URL(string: myurl!) 
    cell.empPhoto.image? = (cell.empPhoto.image?.circle)! 
    cell.empPhoto.image? = (cell.empPhoto.image?.rounded)! 

    cell.empPhoto.sd_setImage(with: url) 

我使用sd_setImage從SDWebImage從URL下載圖像,並將它緩存,但有時URL沒有找到或者有空的內容,所以如果url爲空,如何給單元格設置一個默認圖像,我應該在使用sd_setImage之前檢查url的內容,或者我可以從同一個庫中完成。

我想是這樣的:

 if url.hasImage { 
     cell.empPhoto.sd_setImage(with: url) 
    } 
     else{ // use default image 
     cell.empPhoto.image=UIImage(named: "contact") 
    } 
+0

,同時設置字符串的圖像檢查長度或檢查字符串中包含預期的域名,如果結果爲假,則設置您的預期圖像圖像視圖。 –

+0

@ Io.s-c。謝謝,但事實並非如此,所有的url都有相同的域名,但帶有不同的圖像名稱,每個員工圖像都以他的名字存儲,其中一些圖像沒有圖像,所以這裏出現了我的問題 – Zizoo

+0

您的圖像是否有像png ,jpeg等。然後檢查是否存在於url字符串中。簡單。 –

回答

6

您可以使用此版本的「sd_setImage」的方法:

cell.empPhoto.sd_setImageWithURL(url, placeholderImage:UIImage(imageNamed:"placeholder.png")) 

placeholderImage將是默認的圖像,如果網址不包含有效的圖像。

附加說明:你可能要檢查Kingfisher,它是建立由SDWebImage的啓發,但它是用斯威夫特建成,它支持斯威夫特3.

我希望這有助於。

+0

謝謝,但我從調用此方法'sd_setImageWithURL'得到錯誤 – Zizoo

+0

這取決於您正在使用的Swift版本。可能你使用的是Swift 3,它應該是這樣的:cell.empPhoto.sd_setImage(with:url,placeholderImage:UIImage(imageNamed:「placeholder.png」)) –

+0

是的,謝謝你的回答 – Zizoo

1

有佔位符圖像更好,所以即使您的請求失敗,仍然會有圖像。

可以使用SDWebImage功能sd_setImageWithURL:placeholderImage

斯威夫特設置佔位

cell.empPhoto.sd_setImage(with: url, placeholderImage: placeholderImage); 

Objective-C的

[cell.empPhoto.image sd_setImageWithURL:url placeholderImage:placeholderImage]; 
+0

謝謝你正是我想要的它的工作 – Zizoo

0

試試這個代碼太:

斯威夫特3 & SDWebImage 4.0.0

//SDWebImage 4.0.0 
self.profileImageView.sd_setImage(with: yourImageUrl, placeholderImage: UIImage("Your placeholder image name")