2016-10-05 1 views
3

У меня есть следующий код на cellForRowAt функции:Как установить изображение по умолчанию, когда ImageUrl пуст, используя SDWebImage - Swift

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-адрес пуст, должен ли я проверять содержимое URL-адреса перед использованием sd_setImage, или я могу просто сделать это из той же библиотеки?

что я хочу что-то вроде этого:

 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 будет изображение по умолчанию, если URL не содержит действительное изображение.

Дополнительное примечание: вы можете проверить Kingfisher, он построен вдохновлен SDWebImage, но он построен с использованием Swift, и он поддерживает Swift 3.

Я надеюсь, что это помогло.

+0

Спасибо, но я получаю ошибку от вызова этого метода 'sd_setImageWithURL' – Zizoo

+0

Это зависит от версии Swift, которую вы используете. Вероятно, вы используете Swift 3, это должно быть как: cell.empPhoto.sd_setImage (с: url, placeholderImage: UIImage (imageNamed: "placeholder.png")) –

+0

Да, спасибо за ваш ответ – Zizoo

1

Лучше иметь изображение-заглушку, так что изображение еще будет отображаться даже тогда, когда ваш запрос не удался.

Вы можете установить заполнитель с помощью функции SDWebImage sd_setImageWithURL:placeholderImage

Swift

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

Objective-C

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

Спасибо, что я хочу и это сработало – Zizoo

0

попробуйте этот код тоже:

Swift 3 & SDWebImage 4.0.0

//SDWebImage 4.0.0 
self.profileImageView.sd_setImage(with: yourImageUrl, placeholderImage: UIImage("Your placeholder image name") 
Смежные вопросы