嘿伙計們早上好:),我如何才能將從 API 獲取的資料填充到 TableView,以便我可以一勞永逸地學習它。
所以資料來自 API 的形式如下所示,我只需要一些指導來使資料在我的 tableview 的每個單元格中可用。這些是需要填充的單元格
let token = "NjQzODM2N0NDNDM4NDhCNDFSA3jA0QUY0NjVEFF="
static let shared = APICaller()
private let baseURL = "http://111.111.111.111:3030/api/"
private init() {}
func getVehicles(for id: String, completed: @escaping (Result<[Vehicles],Errors>) -> Void ){
let endpoint = baseURL "GetVehicles?UserIdentificationValue=\(id)"
guard let url = URL(string: endpoint) else {
completed(.failure(.invalidURL))
return
}
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
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 = .useDefaultKeys
let vehicles = try decoder.decode([Vehicles].self, from: data)
completed(.success(vehicles))
} catch let error {
completed(.failure(.invalidData))
}
}
task.resume()
}
這是表視圖中我必須填寫的結構資料:
結構車輛:可編碼{
var IDVehicle: Int?
var Title: String?
var RegistrationDate: String?
var ExpireDate: String?
var Department: String?
var Identification: String?
var Speed: String?
var Latitude: Double?
var Longitude: Double?
var Angle: Int?
var Status: Int?
var InputValue: Int?
var Plate: String?
var LastCommunicationDate: String?
var Passengers: Int?
var Driver: String?
}
uj5u.com熱心網友回復:
在您的 TableViewController 類中
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
var listOfVechicle = [Vehicles]()
override func viewDidLoad() {
super.viewDidLoad()
//Fetch Data From Backend
fetchDataFromAPI()
}
func fetchDataFromAPI(){
let id = "1"
DispatchQueue.global().async {
APIManager.shared.getVehicles(for: id) { Result in
switch Result{
case.success(let vechicles):
self.listOfVechicle = vechicles
DispatchQueue.main.async {
self.tableView.reloadData()
}
case .failure(let error):
print("error")
}
}
}
}
extension ViewController:UITableViewDelegate,UITableViewDataSource{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return listOfVechicle.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as? CustomTableViewCell else {return UITableViewCell()}
//You can Access Your Vehicles Model Values Here one by one
var currentVechicle = listOfVechicle[indexPath.row]
cell.expiryDateLable.text = currentVechicle.ExpireDate
return cell
}
}
uj5u.com熱心網友回復:
我正在使用 MVVM 架構。并使用這種方法將我的資料列印到螢屏上。如果您要求代碼部分,您可以列印您創建的服務示例模型 struct yourModal: Codable { var KM: Double } 像這樣:
var RandomName: [yourModal]!
var api: String = ""
var token: String = ""
Service().YourServiceName(api: self.api, token: self.token) { blnc in
if let blnc = blnc {
self.RiskBalan = blnc
self.Yourlabel.text = self.RandomName[0].KM
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/362792.html
