簡體   English   中英

iOS 9 Alamofire永遠不會加載圖像

[英]iOS 9 Alamofire never loads image

我正在使用AlamofireImage將圖像加載到tableview單元格中的ImageView中(在一個單獨的xib文件中)問題是圖像永遠不會顯示出來。 我認為代碼是正確的,網址也是有效的。

這是代碼(非常簡單):

let placeholderImage = UIImage(named: "imgNoPhoto1")    
if let urlImage = NSURL(string: urlString) {
      photoImage.af_setImageWithURL(urlImage, placeholderImage: placeholderImage)
    }

有任何想法嗎? 可能是單元格沒有重新加載? 我已經在iOS 8和9中測試了它。

希望你幫幫我! 謝謝

根據您是否在prepareForReuse取消請求,您可能遇到了我剛剛在AlamofireImage#55中修復的錯誤。 在接下來的幾天里,我將在這里推出一個新版本。 如果這實際上是你遇到的,你可以暫時注釋掉取消邏輯,這應該解決你的問題,直到我們發布修復。

如果這不是你遇到的問題,那么我會遵循其他人的建議,並確保你可以使用cURL下載圖像。


更新#1

好的,我發現了你的問題。 服務器未返回有效的內容類型,導致AlamofireImage無法驗證圖像,並且不會嘗試將數據解碼為圖像。 您可以通過在終端中運行以下命令來找到它:

curl -H "User-Agent: iOS" -s -D - http://files.encuentra24.com/normalsq/sv/58/08/68/sv/58/08/68/5808689_5e7d99.jpg -o /dev/null

這樣做是針對您提供的URL運行curl。 它不下載圖像數據,只打印出響應頭。 我還發現你需要傳遞User-Agent標題,否則你總是得到403.這是curl命令打印出來的:

cnoon:~$ curl -H "User-Agent: iOS Example/com.alamofire.iOS-Example (1; OS Version 9.1 (Build 13B137))" -s -D - http://files.encuentra24.com/normalsq/sv/58/08/68/sv/58/08/68/5808689_5e7d99.jpg -o /dev/null
HTTP/1.1 200 OK
Cache-Control: max-age=2592000, public
Content-Type: image/jpg
Date: Fri, 11 Dec 2015 16:16:38 GMT
Expires: Sun, 10 Jan 2016 16:16:38 GMT
Pragma: no-cache
Server: nginx/1.7.12
Set-Cookie: sessioninfo=uv491lgtjqvkmt267l1nmlbm24; path=/
Set-Cookie: esid=deleted; expires=Thu, 11-Dec-2014 16:16:37 GMT; path=/
Vary: Accept-Encoding
Content-Length: 23757

現在,這個輸出的重要部分是Content-Type: image/jpg 這實際上不是有效的Content-Type標頭。 有效的是image/jpeg 因此,默認情況下,AlamofireImage不會驗證此響應,也不會解碼圖像。

值得慶幸的是,我們已經支持這種內置於AlamofireImage。 您可以將自定義內容類型添加到Request響應序列化程序。 你如何做到這一點如下:

Alamofire.Request.addAcceptableImageContentTypes(["image/jpg"])

這將使用響應序列化系統將image/jpg內容類型注冊為可接受的內容類型。 注冊后,任何匹配image/jpg內容類型都將被解碼。 有關這方面的更多信息,請參閱AlamofireImage#58

暫無
暫無

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

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