将 json 数据分配给标签
Assign json data to labels
我是 swift 编程的初学者,我想将数据分配给标签
所以我下面有这段代码
@IBOutlet weak var Infected: WKInterfaceLabel!
@IBOutlet weak var Cured: WKInterfaceLabel!
@IBOutlet weak var Deaths: WKInterfaceLabel!
@IBOutlet weak var OmanInfected: WKInterfaceLabel!
@IBOutlet weak var OmanCured: WKInterfaceLabel!
@IBOutlet weak var OmanDeaths: WKInterfaceLabel!
func check()
{
// MARK: - CoronaData
struct CoronaData: Codable {
var countrydata: [Countrydatum]
var stat: String
}
// MARK: - Countrydatum
struct Countrydatum: Codable {
var info: Info
var totalCases, totalRecovered, totalUnresolved, totalDeaths: Int
var totalNewCasesToday, totalNewDeathsToday, totalActiveCases, totalSeriousCases: Int
var totalDangerRank: Int
enum CodingKeys: String, CodingKey {
case info
case totalCases = "total_cases"
case totalRecovered = "total_recovered"
case totalUnresolved = "total_unresolved"
case totalDeaths = "total_deaths"
case totalNewCasesToday = "total_new_cases_today"
case totalNewDeathsToday = "total_new_deaths_today"
case totalActiveCases = "total_active_cases"
case totalSeriousCases = "total_serious_cases"
case totalDangerRank = "total_danger_rank"
}
}
// MARK: - Info
struct Info: Codable {
var ourid: Int
var title, code: String
var source: String
}
if let url = URL(string: "https://api.thevirustracker.com/free-api?countryTotal=OM") {
URLSession.shared.dataTask(with: url) { data, response, error in
if let data = data {
do {
let decoder = JSONDecoder()
let gitData = try decoder.decode(Countrydatum.self, from: data)
print(gitData.totalCases as Any)
} catch let error {
print(error)
}
}
}.resume()
}
}
我现在如何将这些值分配给此处的标签(标签数量)
我知道这是一个愚蠢的问题,但请原谅我
我只想完成程序并学习一些新东西
countrydata
显示为数组,但模型中对应的 属性 是 String
.
类型
您可以下载这个免费程序来制作结构
看到这个 example 使用结构
if let url = URL(string: "https://api.thevirustracker.com/free-api?countryTotal=OM") {
URLSession.shared.dataTask(with: url) { data, response, error in
if let data = data {
do {
let decoder = JSONDecoder()
let profile = try decoder.decode(ProfileResponse.self, from: data)
print(profile.countrydata.first)
} catch let error {
print(error)
}
}
}.resume()
}
您可以使用 setText(:) 或 setAttributedText(:) 方法以编程方式更改文本。
我在 Playground 中复制了请求,文本是不同的总线,您需要访问数据的方式是相同的,国家/地区数据是一个数组,因此您需要获取第一个元素
import UIKit
import PlaygroundSupport
// MARK: - ProfileResponse
struct ProfileResponse: Codable {
var countrydata: [ProfileCountrydatum]
var stat: String
}
// MARK: - ProfileCountrydatum
struct ProfileCountrydatum: Codable {
var info: ProfileInfo
var totalCases, totalRecovered, totalUnresolved, totalDeaths: Int
var totalNewCasesToday, totalNewDeathsToday, totalActiveCases, totalSeriousCases: Int
var totalDangerRank: Int
enum CodingKeys: String, CodingKey {
case info
case totalCases = "total_cases"
case totalRecovered = "total_recovered"
case totalUnresolved = "total_unresolved"
case totalDeaths = "total_deaths"
case totalNewCasesToday = "total_new_cases_today"
case totalNewDeathsToday = "total_new_deaths_today"
case totalActiveCases = "total_active_cases"
case totalSeriousCases = "total_serious_cases"
case totalDangerRank = "total_danger_rank"
}
}
// MARK: - ProfileInfo
struct ProfileInfo: Codable {
var ourid: Int
var title, code: String
var source: String
}
class MyViewController : UIViewController {
override func loadView() {
let view = UIView()
view.backgroundColor = .white
let label = UILabel()
label.frame = CGRect(x: 150, y: 200, width: 200, height: 20)
label.text = "Hello World!"
label.textColor = .black
view.addSubview(label)
self.view = view
if let url = URL(string: "https://api.thevirustracker.com/free-api?countryTotal=OM") {
URLSession.shared.dataTask(with: url) { data, response, error in
if let data = data {
do {
let decoder = JSONDecoder()
let gitData = try decoder.decode(ProfileResponse.self, from: data)
label.text = "\(gitData.countrydata.first?.totalDeaths ?? 0)"
} catch let error {
print(error)
}
}
}.resume()
}
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()
我是 swift 编程的初学者,我想将数据分配给标签
所以我下面有这段代码
@IBOutlet weak var Infected: WKInterfaceLabel!
@IBOutlet weak var Cured: WKInterfaceLabel!
@IBOutlet weak var Deaths: WKInterfaceLabel!
@IBOutlet weak var OmanInfected: WKInterfaceLabel!
@IBOutlet weak var OmanCured: WKInterfaceLabel!
@IBOutlet weak var OmanDeaths: WKInterfaceLabel!
func check()
{
// MARK: - CoronaData
struct CoronaData: Codable {
var countrydata: [Countrydatum]
var stat: String
}
// MARK: - Countrydatum
struct Countrydatum: Codable {
var info: Info
var totalCases, totalRecovered, totalUnresolved, totalDeaths: Int
var totalNewCasesToday, totalNewDeathsToday, totalActiveCases, totalSeriousCases: Int
var totalDangerRank: Int
enum CodingKeys: String, CodingKey {
case info
case totalCases = "total_cases"
case totalRecovered = "total_recovered"
case totalUnresolved = "total_unresolved"
case totalDeaths = "total_deaths"
case totalNewCasesToday = "total_new_cases_today"
case totalNewDeathsToday = "total_new_deaths_today"
case totalActiveCases = "total_active_cases"
case totalSeriousCases = "total_serious_cases"
case totalDangerRank = "total_danger_rank"
}
}
// MARK: - Info
struct Info: Codable {
var ourid: Int
var title, code: String
var source: String
}
if let url = URL(string: "https://api.thevirustracker.com/free-api?countryTotal=OM") {
URLSession.shared.dataTask(with: url) { data, response, error in
if let data = data {
do {
let decoder = JSONDecoder()
let gitData = try decoder.decode(Countrydatum.self, from: data)
print(gitData.totalCases as Any)
} catch let error {
print(error)
}
}
}.resume()
}
}
我现在如何将这些值分配给此处的标签(标签数量)
我知道这是一个愚蠢的问题,但请原谅我 我只想完成程序并学习一些新东西
countrydata
显示为数组,但模型中对应的 属性 是 String
.
您可以下载这个免费程序来制作结构
看到这个 example 使用结构
if let url = URL(string: "https://api.thevirustracker.com/free-api?countryTotal=OM") {
URLSession.shared.dataTask(with: url) { data, response, error in
if let data = data {
do {
let decoder = JSONDecoder()
let profile = try decoder.decode(ProfileResponse.self, from: data)
print(profile.countrydata.first)
} catch let error {
print(error)
}
}
}.resume()
}
您可以使用 setText(:) 或 setAttributedText(:) 方法以编程方式更改文本。
我在 Playground 中复制了请求,文本是不同的总线,您需要访问数据的方式是相同的,国家/地区数据是一个数组,因此您需要获取第一个元素
import UIKit
import PlaygroundSupport
// MARK: - ProfileResponse
struct ProfileResponse: Codable {
var countrydata: [ProfileCountrydatum]
var stat: String
}
// MARK: - ProfileCountrydatum
struct ProfileCountrydatum: Codable {
var info: ProfileInfo
var totalCases, totalRecovered, totalUnresolved, totalDeaths: Int
var totalNewCasesToday, totalNewDeathsToday, totalActiveCases, totalSeriousCases: Int
var totalDangerRank: Int
enum CodingKeys: String, CodingKey {
case info
case totalCases = "total_cases"
case totalRecovered = "total_recovered"
case totalUnresolved = "total_unresolved"
case totalDeaths = "total_deaths"
case totalNewCasesToday = "total_new_cases_today"
case totalNewDeathsToday = "total_new_deaths_today"
case totalActiveCases = "total_active_cases"
case totalSeriousCases = "total_serious_cases"
case totalDangerRank = "total_danger_rank"
}
}
// MARK: - ProfileInfo
struct ProfileInfo: Codable {
var ourid: Int
var title, code: String
var source: String
}
class MyViewController : UIViewController {
override func loadView() {
let view = UIView()
view.backgroundColor = .white
let label = UILabel()
label.frame = CGRect(x: 150, y: 200, width: 200, height: 20)
label.text = "Hello World!"
label.textColor = .black
view.addSubview(label)
self.view = view
if let url = URL(string: "https://api.thevirustracker.com/free-api?countryTotal=OM") {
URLSession.shared.dataTask(with: url) { data, response, error in
if let data = data {
do {
let decoder = JSONDecoder()
let gitData = try decoder.decode(ProfileResponse.self, from: data)
label.text = "\(gitData.countrydata.first?.totalDeaths ?? 0)"
} catch let error {
print(error)
}
}
}.resume()
}
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()