Alamofire:图像下载请求问题

Posted

技术标签:

【中文标题】Alamofire:图像下载请求问题【英文标题】:Alamofire: Image download request issue 【发布时间】:2017-03-22 04:25:26 【问题描述】:

我是 Swift 新手,我在项目中使用 Alamofire 框架,在发出下载图像请求时遇到以下问题,我正在使用以下代码:

let imageURL = Constant.BaseAPI_URL + "/" + driver.driverProfile
Alamofire.request(.GET, imageURL).response() 
        (_, _, data, _) in
        let image = UIImage(data: data! as! NSData)
        deiverProfileImageView.image = image

问题:

Click Here For Image Description

【问题讨论】:

【参考方案1】:

试试这个:

let imageURL = Constant.BaseAPI_URL + "/" + driver.driverProfile


    Alamofire.download(imageURL).responseData  response in
        if let data = response.result.value 
            let image = UIImage(data: data)
            deiverProfileImageView.image = image
        
    

【讨论】:

【参考方案2】:

试试下面的代码

let imageURL = Constant.BaseAPI_URL + "/" + driver.driverProfile
Alamofire.request(imageURL).responseData(completionHandler:  response in
   if let imageData = response.data
   
        deiverProfileImageView.image = imageData
    
)

【讨论】:

【参考方案3】:

试试这个:

让 imageUrl = "www.your_url.com"

Alamofire.download(imageUrl).responseData 
  response in
      if let data = response.result.value 
           let image = UIImage(data: data)
           ProfileImage.image = image
       

我认为最简单的方法是使用 SDWebImage

将此添加到您的 pod 文件中

  pod 'SDWebImage', '~> 4.0'

运行 pod 安装

现在导入 SDWebImage

      import SDWebImage

现在从 url 设置图像

    imageView.sd_setImage(with: URL(string: "http://www.domain/path/to/image.jpg"), placeholderImage: UIImage(named: "placeholder.png"))

它会显示占位符图像,但是当下载图像时,它会显示来自 url 的图像。您的应用永远不会崩溃

这是 SDWebImage 的主要特点

为 UIImageView、UIButton、MKAnnotationView 添加网页图片和缓存管理的类别

异步图片下载器

具有自动缓存过期处理的异步内存 + 磁盘映像缓存

背景图片解压

保证不会多次下载同一个网址

保证不会一次又一次地重试虚假网址

保证主线程永远不会被阻塞 表演!

使用 GCD 和 ARC

了解更多https://github.com/rs/SDWebImage

【讨论】:

以上是关于Alamofire:图像下载请求问题的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire:图像下载请求问题

Alamofire 从多个请求中取消一个请求

Alamofire 并从服务器下载图像 [已解决]

发送 Alamofire JSON 数组 Swift

Alamofire RequestAdapter - 修改 URL

如何在 Swift 3 中使用 Alamofire 在 POST 请求中将给定的 JSON 作为参数发送?