ios - 如何从 URLSession 获取数组
问题描述
试图为新闻网站制作程序。我通过 api 从网站获取信息,一切正常。
唯一的问题是,如何让这个数组脱离循环?
这是我的代码:
import UIKit
class ViewController: UIViewController {
var news:[News] = []
override func viewDidLoad() {
super.viewDidLoad()
getUsers()
print(news)
}
func getUsers() {
guard let url = URL(string: "http://prostir.news/swift/api2.php") else {return}
URLSession.shared.dataTask(with: url) { data, response, error in
if let data = data {
do {
news = try JSONDecoder().decode([News].self, from: data)
// print(self.news)
} catch let error {
print(error)
}
}
}.resume()
}
}
解决方案
struct News:Codable, CustomStringConvertible{
let href:String?
let site:String?
let title:String?
let time:String?
var description: String {
return "(href:- \(href), site:- \(site), title:- \(title), time:- \(time))"
}
}
在您的类中声明新闻数组并在 getUsers 方法中将响应分配给该数组
var news:[News] = []
func getUsers(){
guard let url = URL(string: "https") else {return}
URLSession.shared.dataTask(with: url) { data, response, error in
if let data = data {
do {
self.news = try JSONDecoder().decode([News].self, from: data)
print(self.news)
} catch let error {
print(error)
}
}
}.resume()
}
推荐阅读
- heroku - Flask 应用程序在本地运行,但在 Heroku 上无法渲染模板?
- python-3.x - 给定一个非负整数 num,重复添加它的所有数字,直到结果只有一个数字
- python - 如何提高从 ftp 服务器下载数据的速度?
- scala - 在 expect() 中看到错误值时如何生成 [error] 而不是 [info]
- php - 按顺序创建标识号,并将范围划分为寄存器
- python - youtube-dl 前端视频下载 - 使用 python 和烧瓶?
- javascript - 通过正则表达式从 JavaScript 中提取变量而不是函数
- javascript - 如何搜索
在Javascript中通过id作为条件,然后在另一个中输出文本
?
- javascript - 从数据表中提取渲染的单元格数据
- sql - SQL - 创建数据库并查询它