如何在json中先下载部分数据?

时间:2018-10-28 06:12:49

标签: json swift dispatch

我的JSON响应包含很多数据,包括图像 我想要的是显示文本(因为下载速度非常快),并且在后台下载图像并在完成时显示

这是我的代码,用于处理cellForRowAt函数中单元格中的图像

    if let imgeArray = self.myResponse[indexPath.row]["photos"] as? [[String:Any]] {
        if let photoUrl = imgeArray[0]["Url"] as? String {

            if let url = NSURL(string: "https:serverName/Pics/\(photoUrl)"){

                if let data = NSData(contentsOf: url as URL) {

                    cell?.Image.contentMode = .scaleAspectFit
                    cell?.Image.image = UIImage(data: data as Data)
                }
            }
        }

    }

它工作正常,但需要时间 有帮助吗?

1 个答案:

答案 0 :(得分:-1)

下载图像后,首先调用DispatchQueue.global(qos:.background).async,然后调用DispatchQueue.main.async,然后在图像视图中设置图像。

cell?.Image.contentMode = .scaleAspectFit
DispatchQueue.global(qos: .background).async {

    if let url = NSURL(string: "https:serverName/Pics/\(photoUrl)"){

        if let data = NSData(contentsOf: url as URL) {

            DispatchQueue.main.async {
                cell?.Image.image = UIImage(data: data as Data)
            }

        }
    }

}