如何使用 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 3 中将图像从服务器加载到 tableView 单元格?