首页 > 解决方案 > 当我在 Tableview 中加载我的 json 时,我发现无法转换类型值的错误

问题描述

这是我的代码,无法将数组类型附加到 UIImage,api 已成功加载,我在附加数据时遇到问题

var 图像 = UIImage

func downloadJsonWithURL() {
    let url = NSURL(string: urlString)
    URLSession.shared.dataTask(with: (url as URL?)!, completionHandler: {(data, response, error) -> Void in

        if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSObject {
            print(jsonObj!.value(forKey: "guid"))

            if let actorArray = jsonObj!.value(forKey: "guid") as? [NSObject] {

                    if let actorDict = actorArray as? NSObject
                    {



                        if let name = actorDict.value(forKey: "rendered") {



                            **self.images.append(name as! UIImage)**

                            print("\(name)")



                        }

                    }

            }

            OperationQueue.main.addOperation({
                self.tableView.reloadData()
            })
        }
    }).resume()
}

这是我的休息 api

guid {1} 呈现: http ://thenewschef.com/wp-content/uploads/2018/02/startup.jpeg

标签: swift3tableviewwordpress-rest-api

解决方案


使用高阶函数增强了上述解决方案的实现,以避免所有演员跳舞。

使用以下代码获取响应表单服务器并在单个数组中过滤所需的 imageUrl。

func downloadJsonWithURL() {
                 let urlString = "https://thenewschef.com/wp-json/wp/v2/media"
                 let url = NSURL(string: urlString)
                 URLSession.shared.dataTask(with: (url as URL?)!, completionHandler: {[weak self] (data, response, error) -> Void in
                 if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments)  {
                 let guids = (jsonObj as? [[String: Any]])?.map { $0["guid"] }
                 let imagesArray = (guids as? [[String: Any]])?.map {$0["rendered"]} as? [String]

                 OperationQueue.main.addOperation({
                    //Reload Table here...
                })
            }
        }).resume()
    }

推荐阅读