如何使用 Swift 3 将图像从 Rest Api 加载到视图中加载方法

Posted

技术标签:

【中文标题】如何使用 Swift 3 将图像从 Rest Api 加载到视图中加载方法【英文标题】:how to load image From Rest Api Into View did Load Method Using Swift 3 【发布时间】:2018-07-19 13:21:50 【问题描述】:

我想在不使用 Tableview 或 collectionView 的情况下在 View 中加载图像,我有 Wordpress Rest Api 的 URL,我尝试使用 SwiftyJson 加载图像,我得到了所有图像的行值但图像无法加载我发现致命错误:索引超出范围,请帮助我

override func viewDidLoad() 
            super.viewDidLoad()


        let url = NSURL(string: "  ")

        let session = URLSession(configuration: URLSessionConfiguration.default)

        let task = session.dataTask(with: URLRequest(url: url! as URL)) (data,response , error) -> Void in

            if (error == nil)
            

                let swiftyJSON = JSON(data!)
                let entrylevel = swiftyJSON["guid"].arrayValue

                print("\(String(describing: entrylevel))")
                let imagearray = entrylevel[0]["rendered"].string!

                let imageurl = NSURL(string:imagearray)

                if let imagedata = NSData(contentsOf: imageurl! as URL)

                
                    self.img.image = UIImage(data: imagedata as Data)
                    print("image load")

                       

                    

        
        task.resume()
    

这是我的rest api

["id":1509 "日期":"2018-02-15T13:33:22", "date_gmt":"2018-02-15T13:33:22" "guid": "渲染":"http://thenewschef.com/wp-content/uploads/2018/02/startup.jpeg"

【问题讨论】:

这个 "let entrylevel = swiftyJSON["guid"].arrayValue" 值没有数组,但整个响应都在数组中。你到底想做什么? 是否要将整个响应 ["guid"] 值放入数组中? 我想要为图像视图呈现响应 你检查过你的整个数据是数组还是字典格式? 根不是 guid 它是一个数组 【参考方案1】:

guid 是字典而不是数组试试

let entrylevel = swiftyJSON[0]["guid"]["rendered"].string 

也把它包起来

DispatchQueue.main.async 

   self.img.image = UIImage(data: imagedata as Data)

   

最好使用Data 而不是NSData

//

struct Root:Decodable 

  let  guid:InnerItem


struct InnerItem:Decodable 

   let rendered:String


try 
   let items = try JSONDecoder().decode([Root].self, from: data!)


catch 

print(error)

【讨论】:

以上是关于如何使用 Swift 3 将图像从 Rest Api 加载到视图中加载方法的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 2.0 在 Parse.com (REST API) 中上传图像并将其与用户关联

使用swift从目录加载多个图像

如何在 swift 3 中将图像从服务器加载到 tableView 单元格?

如何从相机捕获多张图像并使用位图将其编码为字符串?

Swift 3将图像从URL添加到UIImageView [重复]

如何在 Spring Rest Call 中使用 GridFS 从 Mongodb 发送和检索图像?