我用 Json 中的請求資料制作了 API 檔案,還制作了一個不同的型別資料結構,但我在檢索資料時遇到了問題,它顯示空的 tableView 而不是至少顯示我制作的單元格。
這是 tableView 的回傳代碼:
extension MonitorimiViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return vehicles.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "monitorimiCell", for: indexPath) as! MyCustomCell1
cell.configure()
return cell
}
這是包含必須在 Cell 標簽中填寫的資料的結構檔案:
struct Vehicles: Codable {
var Plate: String?
var Speed: Int
var LastCommunicationDate: Int
var Passengers: Int
var Driver: String
}
這是 API 請求檔案:
class APICaller {
static let shared = APICaller()
private let baseURL = "http://000.000.000.000:3030/api/"
private init() {}
func getVehicles(for id: String, IMEI: Int, completed: @escaping (Result<[Vehicles],OnTraErrors>) -> Void ){
let endpoint = baseURL "GetVehicle/?UserIdentificationValue=JJGI243GJI3G&IMEI=623624346236"
let headers = [
"content-type": "application/json",
"authorizetoken": "NjQzOPA2N0NDNDFAH4CNDk3R23F2FQUY0NjV3FFE=",
"cache-control": "no-cache",
]
guard let url = URL(string: endpoint) else {
completed(.failure(.invalidURL))
return
}
var request = URLRequest(url: url, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 120)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let task = session.dataTask(with: request) { data, response, error in
if let _ = error {
completed(.failure(.unableToComplete))
return
}
guard let response = response as? HTTPURLResponse, response.statusCode == 200 else {
completed(.failure(.invalidResponse))
return
}
guard let data = data else {
completed(.failure(.invalidData))
return
}
do {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let vehicles = try decoder.decode([Vehicles].self, from: data)
completed(.success(vehicles))
} catch {
completed(.failure(.invalidData))
}
}
task.resume()
}
因此,當我將回傳的車輛數更改為回傳 10 時,它只會顯示我的單元格如下:[1]:https : //i.stack.imgur.com/aVp5Z.png
但現在它向我展示了這個而不是填充那些標簽 [2]:https : //i.stack.imgur.com/RG4bb.png
uj5u.com熱心網友回復:
確保您正在重新加載您UITableView可以簡單地觀察 dataSource 變數
var vehicles: [Vehicles] = [] { // i suggest renaming Vehicles struct to vehicle
didSet {
tableView.reloadDate()
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/361702.html
