SDWebImage 在设置提到的 url 中的图像时抛出错误

SDWebImage throws an error when setting the image from the url mentioned

当我尝试使用 SDWebImage 从以下 url 设置图像时,出现以下错误:-

URL :- https://s3.ap-south-1.amazonaws.com/quickride1/1563967975923.png Error :- Error Domain=SDWebImageErrorDomain Code=2001 "(null)" UserInfo={SDWebImageErrorDownloadStatusCodeKey=404}

不知道为什么会出现这个问题。任何解决方案提前致谢

已经浏览了几个关于 sdwebimage 和文档的教程,但是 none 解决了我的问题

public func setImageToView(imageView : UIImageView, imageUrl : String?,gender : String){
    AppDelegate.getAppDelegate().log.debug("setImageToView() \(gender)")
    if imageUrl == nil || imageUrl?.isEmpty == true || QRSessionManager.getInstance()?.getUserId() == nil || QRSessionManager.getInstance()?.getUserId().isEmpty == true {
        imageView.image = getDefaultUserImage(gender: gender)
        return
    }

    let URL = NSURL(string: imageUrl!)
    if URL == nil
    {
        imageView.image = getDefaultUserImage(gender: gender)
        return
    }
    imageView.sd_imageIndicator = SDWebImageActivityIndicator.gray
    imageView.sd_setImage(with: URL! as URL, placeholderImage: nil , options: SDWebImageOptions(rawValue: 0)) { (image, error, cacheType, url) in
        AppDelegate.getAppDelegate().log.debug("Image :- \(image),error :- \(error),cacheType :- \(cacheType),url :- \(url)")
        if error != nil{
            imageView.image = self.getDefaultUserImage(gender: gender)
            return
        }
         self.checkAndSetCircularImage(imageView: imageView, image: image)
     }

}

我不知道你的问题是什么,我检查了 link,一切正常,这是我的代码

guard
        let url = URL(string: "https://s3.ap-south-1.amazonaws.com/quickride1/1563967975923.png")
        else {
            return
    }
    imageView.sd_setImage(with: url) { (image, error, cacheTRype, url) in
        print(error?.localizedDescription ?? "no error loading image")
    }

刚刚尝试了您的代码,一切正常:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    let imgURL = "https://s3.ap-south-1.amazonaws.com/quickride1/1563967975923.png"

    setImageToView(imageView : imageView, imageUrl : imgURL,gender : "Male")
}

public func setImageToView(imageView : UIImageView, imageUrl : String?,gender : String){

    let URL = NSURL(string: imageUrl!)

    imageView.sd_imageIndicator = SDWebImageActivityIndicator.gray
    imageView.sd_setImage(with: URL! as URL, placeholderImage: nil , options: SDWebImageOptions(rawValue: 0)) { (image, error, cacheType, url) in
        if error != nil{
            print(error)
            return
        }
    }

}

错误信息包含两个信息:

1) SDWebImageErrorDomain Code=2001,其中 SDWebImageError.h 文件说:

SDWebImageErrorInvalidDownloadStatusCode = 2001, 
// The image downloda response a invalid status code. You can check the status code in error's userInfo under `SDWebImageErrorDownloadStatusCodeKey` 

2) UserInfo={SDWebImageErrorDownloadStatusCodeKey=404}:

显然是 Not Found error

看来您的设备/模拟器没有到达图像。

具体发生在什么时候?您确定没有多次调用此方法或使用格式错误的图片网址吗?

编辑

imageView.sd_cancelCurrentImageLoad()之前再次调用该方法解决了问题

我遇到了同样的问题,在查看后发现我正在尝试使用 URL 的 webImage,这对我的应用程序特别无效。

当我试图从 firebase 存储中获取图像 URL 时发生了这种情况,结果证明这是错误的存储。