本質上,我在加載 tableview 控制器時執行以下函式。使用 JSON 回應值之一,我想創建一個條件 - 如何在以下pawprint位置列印值myid == 3:
我試圖DispatchQueue.main.async在同一個函式中訪問它,但我很困惑如何參考它?例如我不能做 myData.pawprint - 因為它是一個 JSON 陣列。
private func fetchJSON() {
guard let url = URL(string: "test.com")
else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = "mykey=\(keyValue)".data(using: .utf8)
URLSession.shared.dataTask(with: request) { [self] data, _, error in
guard let data = data else { return }
do {
let decoder = JSONDecoder()
self.structure.sort { $0.thisdate > $1. thisdate }
let res = try decoder.decode([thisStructure].self, from: data)
let grouped = Dictionary(grouping: res, by: { $0. thisdate })
_ = grouped.keys.sorted()
sections = grouped.map { thisSections(date: $0.key, items: $0.value) }
.sorted { $0.date > $1.date }
print(sections.map(\.date))
sections.map.
let myData = try JSONDecoder().decode(thisStructure.self, from: data)
DispatchQueue.main.async {
self.tableView.reloadData()
print("TableView Loaded")
}
}
catch {
print(error)
}
}.resume()
}
struct thisSections {
let date : String
var items : [thisStructure]
}
struct thisStructure: Decodable {
let myid: Int
let pawprint: String
let activationid: Int
let stopid: Int
}
JSON 回應示例:
[
{
"myid": 3,
"pawprint": "Print Me",
"activationid": 2,
"stopid": 1
}
]
uj5u.com熱心網友回復:
MyData.forEach {
item in
if item.myid == 3{
prin(\(item.pawprint))
}
}
你在找這個嗎?
uj5u.com熱心網友回復:
您可以嘗試這種方法來選擇,然后列印thisStructure
pawprint您想要的具體內容:
private func fetchJSON() {
guard let url = URL(string: "test.com")
else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = "mykey=\(keyValue)".data(using: .utf8)
URLSession.shared.dataTask(with: request) { [self] data, _, error in
guard let data = data else { return }
do {
let decoder = JSONDecoder()
self.structure.sort { $0.thisdate > $1. thisdate }
let res = try decoder.decode([thisStructure].self, from: data)
let grouped = Dictionary(grouping: res, by: { $0. thisdate })
_ = grouped.keys.sorted()
sections = grouped.map { thisSections(date: $0.key, items: $0.value) }
.sorted { $0.date > $1.date }
print(sections.map(\.date))
// --- here res is an array of `thisStructure`
if let selectedOne = res.first(where: {$0.myid == 3}) {
print(selectedOne.pawprint)
}
// do not try to decode this from the data
// let myData = try JSONDecoder().decode(thisStructure.self, from: data)
DispatchQueue.main.async {
self.tableView.reloadData()
print("TableView Loaded")
}
}
catch {
print(error)
}
}.resume()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/384069.html
標籤:迅速
上一篇:iOS15UIButton配置-如何為配置處理程式撰寫閉包
下一篇:排序字串陣列,但Swift例外
