使用 Alamofire 检索图像时遇到问题,有些图像加载,有些则没有 (SWIFT)

Posted

技术标签:

【中文标题】使用 Alamofire 检索图像时遇到问题,有些图像加载,有些则没有 (SWIFT)【英文标题】:Trouble retrieving images with Alamofire, some images load, some don't (SWIFT) 【发布时间】:2016-07-19 17:46:58 【问题描述】:

所以我有点卡在这里。我有一个移动应用程序,它有一个使用 TableView 的“提要”,它填充了来自 firebase 的图片、描述和喜欢。我将 ImageShack 用于图像上传 API,并从那里抓取 imgLinks(使用 alamofire)。图片正在上传,在我的 ImageShack 面板上,图片看起来很棒。所以我知道这不是firebase,也不是imageshack的错,但大多数图片甚至都无法加载,它们只是白框,我可以确认imageUrl!= nil,所以这绝对是Alamofire的请求问题。 这是我的 Alamofire GET 请求代码 如果 post.imageUrl != nil

        if img != nil 
            self.deckImg.image = img
         else 

            request = Alamofire.request(.GET, post.imageUrl!).validate(contentType:     ["image/*"]).response(completionHandler:  request, response, data, err     in
                if err == nil 
                    let img = UIImage(data: data!)!
                    self.deckImg.image = img
                    FeedController.imageCache.setObject(img, forKey: self.post.imageUrl!)
                 else 
                    print(err.debugDescription)
                
            )
        
     else 
        self.deckImg.hidden = true

    

另外,我可以确认它没有隐藏图像,因为当 self.deckImg.hidden = true 时,我调整了行的高度,而且我还可以看到它从未被调用,因为它甚至从未达到那个断点。所以这只是与 Alamofire 的获取请求有关.. 它是什么:(

【问题讨论】:

首先,我建议您考虑使用 [AlamofireImage][1],它在 Alamofire 之上提供图像加载基础设施,包括它自己的缓存和图像解码。除此之外,我们确实需要更多信息来帮助您。你拿回数据了吗?变成了合适的UIImage? [1]:github.com/alamofire/alamofireimage 【参考方案1】:

我想我知道问题出在哪里,因为我连续几天都被困住了。 我认为您使用的是自定义 tableViewCell VC,并且在绑定数据的函数中您放置了如下内容:

self.deckImg.image = nil

然后检查是否有缓存的图片,如果没有就用alamofire下载 检查 post.imageUrl != nil 后,您必须取消隐藏 self.deckImg:

if post.imageURL != nil

    self.deckImg.hidden = false

    if img != nil 
    
        self.deckImg.image = img
     
    else 
    
        request = Alamofire.request(.GET, post.imageUrl!).validate(contentType:     ["image/*"]).response(completionHandler:  request, response, data, err     in
            if err == nil 
                let img = UIImage(data: data!)!
                self.deckImg.image = img
                FeedController.imageCache.setObject(img, forKey: self.post.imageUrl!)
             else 
                print(err.debugDescription)
            
        )
    

 else

    self.deckImg.hidden = true

【讨论】:

以上是关于使用 Alamofire 检索图像时遇到问题,有些图像加载,有些则没有 (SWIFT)的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire - 使用照片时图像上传失败

如何使用 Alamofire 将用户配置文件图像保存到 MYSQL 数据库,然后在以下屏幕上检索

使用 multipartFormData 上传图像时 Alamofire 请求正文为零

Alamofire:图像下载请求问题

从 URL 检索和显示多个图像

尝试通过 Alamofire 4.0 上传图像时,类型“ParameterEncoding”没有成员“URL”