向阿拉莫火请求



我从 swift 开始,我试图带来一份带有 alamofire 的汽车清单,但它没有带来 代码在不引发错误的情况下执行,但不抛出列表 我看到一个空白的表视图

https://uploaddeimagens.com.br/imagens/simulator_screen_shot_-_iphone_8_-_2019-10-20_at_16-48-23-png

(对不起...使用写入代码进行编辑(

我的课程

struct HotelData: Codable  {
let results: [Results]
}
struct Results: Codable  {
let smallDescription: String
let price: Price
let gallery: [ImageHotel]
let name: String
let address: Address
var getRandonImage: ImageHotel {
let index = Int(arc4random_uniform(UInt32(gallery.count)))
return gallery[index]
}
}

====

==========我的经理

class func getHotels(onComplete: @escaping (HotelData?) -> Void) {
AF.request(path).responseJSON { (response) in
guard let jsonData = response.data else { return }
guard let hotelData = try? JSONDecoder().decode(HotelData.self, from: jsonData)
else {
onComplete(nil)
return
}
onComplete(hotelData)
return
}
}
}

====

==========细胞

func prepareCell(with hotel: Results){
lbName.text = hotel.name
lbSmallDescription.text = hotel.smallDescription
lbPrice.text = "R$ (hotel.price.amount)"
lbAdress.text = hotel.address.city
}

====

==========表视图 类 HotelTableViewController: UITableViewController {

var hotels: [Results] = []
let hotelManager = HotelManager()
override func viewDidLoad() {
super.viewDidLoad()
loadHotels()
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}

override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return hotels.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! HotelTableViewCell
let hotel = hotels[indexPath.row]
cell.prepareCell(with: hotel)
return cell
}

func loadHotels() {
HotelManager.getHotels { (hotelData) in
if let hotelData = hotelData {
self.hotels += hotelData.results
}
}
}
}

您的直接问题是,如果您希望UITableView查看下载的数据并加载适当的单元格,则需要调用reloadData()。可以放入网络调用的完成处理程序,也可以放入hotels属性的didSet中。

此外,您不应该将responseJSON用于Decodable类型,它是多余的。相反,您应该使用responseDecodable并传递要解析的类型:responseDecodable(of: HotelData.self) { response in ... }

最新更新