Как установить изображение по умолчанию, когда ImageUrl пуст, используя SDWebImage — Swift

#ios #swift #sdwebimage

#iOS #swift #sdwebimage

Вопрос:

У меня есть следующий код в 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)
  

Я использую sd_setImage from 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")
     }
  

Комментарии:

1. при настройке изображения проверьте длину строки или проверьте, содержит ли строка ожидаемое доменное имя, если результат false, затем установите ожидаемое изображение на вид изображения.

2. @Io.s-c. Спасибо, но это не так, все URL-адреса имеют один и тот же домен, но с другим именем изображения, каждое изображение сотрудника хранится с его именем, а у некоторых из них нет изображений, поэтому возникает моя проблема

3. Имеет ли ваше изображение какое-либо расширение, например png, jpeg и т. Д. Затем проверьте, присутствует ли оно в строке url. просто.

4. @io.s-c. Все URL-адреса представляют собой URL-адреса изображений с расширением jpeg, но некоторые из этих URL-адресов не найдены

5. Ооо, итак, вы говорите, что URL правильный, но там нет изображения. в этом случае вы можете проверить, содержит ли объект sd image изображение. Используя это «if image ! = nil», вы можете это проверить.

Ответ №1:

Вы можете использовать эту версию sd_setImage метода:

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

placeholderImage будет изображением по умолчанию, если URL-адрес не содержит допустимого изображения.

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

Комментарии:

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

2. Это зависит от используемой вами версии Swift. Вероятно, вы используете Swift 3, оно должно быть похоже на: cell.empPhoto.sd_setImage(с: url, placeholderImage: UIImage(imageNamed:»placeholder.png»))

Ответ №2:

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

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

Swift

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

Objective-C

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

Ответ №3:

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

Swift 3 и SDWebImage 4.0.0

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