Swift 3:网址请求失败,图片没有添加到单元格

时间:2017-03-02 09:23:31

标签: uitableview url swift3 uiimage

我正在尝试从不同的网址加载一些图片,以便将它们添加到我的表视图单元格中。每个单元格都包含一个UIImageView,图片(UIImage)无法正确加载。

有时URL连接失败,有时则失败。我要疯了, 请帮帮我!!

这是我的代码中尝试从特定网址下载图片的部分:

let imageURL = NSURL(string: "https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Angels_Stadium.JPG/1920px-Angels_Stadium.JPG")!

    let task = URLSession.shared.dataTask(with: imageURL as URL) { (data, response, error) in

        guard error == nil, let data = data else { return }

        let downloadedImage = UIImage(data: data)

        self.foto = downloadedImage!

        tableWiew.reloadData()
    }
    task.resume()

此代码位于我的类(User)的init函数内。在实例化该类之后,我尝试将图片添加到我的tableview中,如下所示:

let user:User = User(json: obj, tableWiew: self.tableView)
addCell(cell: cell, name: user.nombre, job: user.puesto, nIdeas: "0", mProp: "0", image: user.foto)

“addCell”方法只创建一个自定义单元格并将其插入到我的tableView中。除了该死的画面外,这种方法还算不错。

如果我从我的资产中添加图片,它可以正常工作,但当我尝试从网址添加图片时,我不知道出了什么问题。

2 个答案:

答案 0 :(得分:1)

请在UITableViewDataSource的cellForRowAt方法中下载图像,如果可能,请使用SDWebImage来帮助您使用许多选项,例如占位符。它在内部处理缓存,它是异步的。

答案 1 :(得分:0)

let imageURL = NSURL(string: "https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Angels_Stadium.JPG/1920px-Angels_Stadium.JPG")!

    let request = URLRequest(url: imageURL as URL)
    let session = URLSession.shared
    let task = session.dataTask(with: request, completionHandler: {data, response, error -> Void in
        // print("Task completed")
        // print(response)
        DispatchQueue.main.async(execute: {
         self.imgVW.image = UIImage(data: data!)
        })

    })
    task.resume()