如何从JSON数据响应中获取UIImage?

时间:2019-01-13 11:14:59

标签: ios json swift uiimage

我试图以字节为单位获取图像并从中创建UIImage,但是我不明白如何解析它。

我的代码:

func getAvatar() {
    NetworkManager.shared.getAvatar(methodPath: "www.xxxxxx.xxx", params: nil) { (data) in
        guard let dataValue = data as? Data else {return}
        DispatchQueue.main.async {
            do {
                let response = try JSONSerialization.jsonObject(with: dataValue, options: .mutableContainers)
                print(response)
            } catch {
                print("Class - HomePageHelper, Method - getAvatar = \(error)")
            }
        }
    }
}

在邮递员中,我得到这样的东西:

enter image description here

我做错了什么?

3 个答案:

答案 0 :(得分:3)

此响应的格式为Data

您可以在可选之后使用UIImage来简单地使用它创建实例

链接guard let dataValue = data as? Data else {return}

使用此dataValue制作一个UIImage,就像这样。

let img = UIImage(data: dataValue)

答案 1 :(得分:0)

我想提供详细的解决方案。

我已经使用这种方法从Internet下载数据对象。

    public func getData(from url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) {
        URLSession.shared.dataTask(with: url, completionHandler: completion).resume()
    }

这里是该代码的实现,用于从Internet下载图像。

        if let urlPath = model?.iconUrl, let url = URL(string: urlPath) {
            NetworkClass.sharedInstance.getData(from: url) { (data, response, error) in
                guard let data = data, error == nil else { return }
                DispatchQueue.main.async() {
                    self.imageView.image = UIImage(data: data)
                }
            }
        }

答案 2 :(得分:0)

您可以使用SDWebImage

imageView.sd_setImage(with: URL(string:urlStr), placeholderImage: UIImage(named: "placeholder.png"))