2016-10-05 5 views
3

I持ってcellForRowAt機能で、次のコード:- スウィフトを

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) 

私はそれをURLからイメージをダウンロードしてキャッシュするためにSDWebImageからsd_setImageを使用していますが、いつかURLが見つからない、または空のコンテンツがあるので、URLが空の場合にセルのデフォルトイメージを与えるには、sd_setImageを使用する前にURLの内容をチェックするか、同じライブラリから行うことができますか? URLがない場合、デフォルトの画像になります

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

placeholderImage:あなたは "sd_setImage" メソッドのこのバージョンを使用することができます

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

文字列の画像チェックの長さを設定しながら、または文字列をチェックした後、画像表示にあなたの期待される画像を設定する偽の結果ならば、予想されるドメイン名が含まれています。 –

+0

@ l0.s-c。ありがとう、それはそうではありません、すべてのURLは同じドメインを持っていますが、彼の名前で保存されているすべての従業員の画像とは別の画像名で、それらのいくつかは画像がないので、ここに私の問題が来ます – Zizoo

+0

画像にpng 、jpegなど。それがURL文字列に存在するかどうかを確認します。シンプル。 –

答えて

6

は、私が欲しいのはこのようなものです有効な画像が含まれています。

追加注:あなたがKingfisherをチェックしたい場合があります、それはSDWebImageに触発され、それはスウィフトを使用して構築され、そしてそれは、私は、これは助けを願っていスウィフト3.

をサポートして構築されています。

+0

ありがとうございますが、このメソッドを呼び出す際にエラーが発生します。 'sd_setImageWithURL' – Zizoo

+0

これは使用しているSwiftのバージョンによって異なります。おそらくあなたはSwift 3を使用しています。cell.empPhoto.sd_setImage(with:url、プレースホルダーイメージ:UIImage(imageNamed: "placeholder.png")) –

+0

回答ありがとうございました – Zizoo

1

プレースホルダイメージがある方が、要求が失敗してもイメージが残ることがあります。

あなたはsd_setImageWithURL:placeholderImage

スウィフトSDWebImage機能を使用して、プレースホルダを設定することができます

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")