ios - 如何使用 Swift 3 将图像从 Rest Api 加载到视图中
问题描述
我想在不使用 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()
}
这是我的休息 api
[{"id":1509 "date":"2018-02-15T13:33:22", "date_gmt":"2018-02-15T13:33:22" " guid ": { "渲染":"http: //thenewschef.com/wp-content/uploads/2018/02/startup.jpeg" }
解决方案
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)
}
推荐阅读
- gcc - 构建 GCC8.2.0 失败并显示“检查汇编器是否支持 -mnan ... 否”
- regex - 正则表达式:不捕获匹配,但在匹配后捕获
- python - pandas - 从 groupby 中选择组(by=[group1, group2])
- python - python在循环中更新变量并在另一个进程中使用它
- perl - 没有赋值的哈希值
- java - MSSQL 驱动程序的类转换异常
- python - tensorflow 的 tf.name_scope() 中的 deafult_name 参数是什么?
- applescript - 如何解析来自 Apple 终端或 Applescript 的响应?
- reactjs - 在样式化组件中扩展样式时,有没有办法传递道具?
- python - 如何在 AWS elastic-beanstalk 中更改我的 python 版本