簡體   English   中英

SDWebImage 錯誤下載的圖像有 0 像素

[英]SDWebImage error downloaded image has 0 pixels

使用 SDWebImage 最新的 swift 庫版本在加載幾個 url 時出現以下錯誤

下載的圖像有 0 像素

以下是代碼

if let url = URL(string: storeImgStr.encoded), !(storeImgStr.isEmpty) {
        self.storeImg.sd_setImage(with: url, placeholderImage: UIImage(named: Constants.storeImagePlaceorderImage)) {
            (image, error, cahce, url) in
            if(error != nil) {
            }
        }

    }
    else {
        self.storeImg.image = UIImage(named: Constants.storeImagePlaceorderImage)

    }

由於政策問題,我的 url 看起來像這樣,無法共享確切的 url 域名已更改

https://tximages.mydomain.in/retailers_data_v2/retailer/320/3306-1-Aviator.jpg

以下是錯誤代碼

Error Domain=NSURLErrorDomain Code=-1100 "(null)"

我也可以在網絡瀏覽器中打開圖片網址。

這里的問題究竟是什么?

以下擴展名用於編碼 url

extension String {
var encoded: String {
    return self.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
}
}

更新:能夠在 Chrome 瀏覽器中打開上面的圖片 URL,但無法在 Safari 瀏覽器中打開它是什么原因?

-1100表示NSURLErrorFileDoesNotExist 還有一種可能性,服務器不會將文件返回到特定國家或由於urlString特定符號 在這種情況下,您可以應用以下編碼: stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding 你也可以使用SDWebImageRetryFailed ,因為它的描述文檔,詳細了解此標志

storeImg.sd_setImage(with: urlEncoded, placeholderImage: UIImage(named: Constants.storeImagePlaceorderImage), options: .retryFailed) { // handle result completion }

您可以使用以下方法測試斷開的鏈接:

import UIKit
import SDWebImage
import WebKit

extension String {
    var encoded: String {
        return self.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
    }
}

class ViewController: UIViewController {
    let testURL = "https://i.groupme.com/638x640.jpeg.d4f31c747b534baca03d12db5a2b6193"
    let testURLShouldEncode = "https://via.placeholder.com/468x60?text=Visit Blogging.com Now"

    var storeImg: UIImageView!
    var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        configureUI()

        if let urlEncoded = URL(string: testURLShouldEncode.encoded), !(testURL.isEmpty) {
            storeImg.sd_setImage(with: urlEncoded, placeholderImage: UIImage(named: Constants.storeImagePlaceorderImage)) { 
                [unowned self] (image, error, cahce, url) in
                print("image \(String(describing: image))")
                print("error \(String(describing: error?.localizedDescription))")
                print("cache \(cahce)")
                print("url \(String(describing: url))")
                if (error != nil) {
                    let request = URLRequest(url: urlEncoded)
                    self.webView.load(request)
                }
            }
        } else {
            self.storeImg.image = UIImage(named: Constants.storeImagePlaceorderImage)
        }
    }

    func configureUI() {
        storeImg = UIImageView()
        storeImg.contentMode = .center
        storeImg.translatesAutoresizingMaskIntoConstraints = false

        webView = WKWebView()
        webView.translatesAutoresizingMaskIntoConstraints = false

        view.addSubview(storeImg)
        view.addSubview(webView)

        view.backgroundColor = .blue
        storeImg.backgroundColor = .yellow
        webView.backgroundColor = .orange

        storeImg.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
        storeImg.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
        storeImg.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
        storeImg.heightAnchor.constraint(equalToConstant: 300).isActive = true

        webView.topAnchor.constraint(equalTo: storeImg.safeAreaLayoutGuide.bottomAnchor).isActive = true
        webView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
        webView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
        webView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
    }
}

我也遇到了這個問題,我的解決方案是通過將"SD_WEBP=1"添加到您的SDWebImage目標 -> Build Settings -> Preprocessor Macros 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM