如何 link 解码 json 到 swift 中的 uilabels?
How to link decoded json to uilabels in swift?
我想 link 解码 JSON
到我的 UILabels
在我看来。我怎样才能做到这一点?
下面给出的结构是我在下面解码并能够打印出来的。但我尝试 link 为那些解码数据添加标签。
struct Details:Decodable{
var deaths : Int
var recovered : Int
var active : Int
var critical : Int
var cases : Int
var tests:Int
var todayCases:Int
var todayDeaths:Int
var todayRecovered:Int
}
我在 viewDidLoad
中进行了解析
class ViewController: UIViewController {
var detailData:Details!
@IBOutlet weak var infected: UILabel!
@IBOutlet weak var active: UILabel!
@IBOutlet weak var recovered: UILabel!
@IBOutlet weak var death: UILabel!
@IBOutlet weak var totalTested: UILabel!
//MARK: - View DID LOAD
override func viewDidLoad() {
super.viewDidLoad()
//MARK: - BASIC EDIT
title = "Neporona"
let group = [infected,active,recovered,death,totalTested]
for i in group{
i!.layer.masksToBounds = true
i!.layer.cornerRadius = 20
}
//MARK: - JSON DECODING
guard let url = URL(string: "https://corona.lmao.ninja/v2/countries/nepal?yesterday=false") else { return }
URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let data = data else { return }
do{
let decoder = try JSONDecoder().decode(Details.self, from: data)
self.detailData = decoder
print(self.detailData!)
}
catch{
print(error.localizedDescription)
}
}.resume()
}
}
您可以更新 detailData
的 didSet
上的标签,如下所示,
var detailData:Details! {
didSet {
DispatchQueue.main.async {
self.infected.text = String(self.detailData.cases)
self.active.text = String(self.detailData.active)
self.recovered.text = String(self.detailData.recovered)
}
}
}
我想 link 解码 JSON
到我的 UILabels
在我看来。我怎样才能做到这一点?
下面给出的结构是我在下面解码并能够打印出来的。但我尝试 link 为那些解码数据添加标签。
struct Details:Decodable{
var deaths : Int
var recovered : Int
var active : Int
var critical : Int
var cases : Int
var tests:Int
var todayCases:Int
var todayDeaths:Int
var todayRecovered:Int
}
我在 viewDidLoad
class ViewController: UIViewController {
var detailData:Details!
@IBOutlet weak var infected: UILabel!
@IBOutlet weak var active: UILabel!
@IBOutlet weak var recovered: UILabel!
@IBOutlet weak var death: UILabel!
@IBOutlet weak var totalTested: UILabel!
//MARK: - View DID LOAD
override func viewDidLoad() {
super.viewDidLoad()
//MARK: - BASIC EDIT
title = "Neporona"
let group = [infected,active,recovered,death,totalTested]
for i in group{
i!.layer.masksToBounds = true
i!.layer.cornerRadius = 20
}
//MARK: - JSON DECODING
guard let url = URL(string: "https://corona.lmao.ninja/v2/countries/nepal?yesterday=false") else { return }
URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let data = data else { return }
do{
let decoder = try JSONDecoder().decode(Details.self, from: data)
self.detailData = decoder
print(self.detailData!)
}
catch{
print(error.localizedDescription)
}
}.resume()
}
}
您可以更新 detailData
的 didSet
上的标签,如下所示,
var detailData:Details! {
didSet {
DispatchQueue.main.async {
self.infected.text = String(self.detailData.cases)
self.active.text = String(self.detailData.active)
self.recovered.text = String(self.detailData.recovered)
}
}
}