请求 Alamofire
Posted
技术标签:
【中文标题】请求 Alamofire【英文标题】:Request with Alamofire 【发布时间】:2019-10-20 18:03:24 【问题描述】:我从 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
【问题讨论】:
发布您的代码作为问题的一部分,并解释问题所在。 您的 CarData 结构的定义是什么?它不在您上面的代码中。你的确切问题是什么?你不能从互联网上获取数据吗?还是无法解析得到的响应json? 能否请您edit 分享一个重现您的问题的minimal reproducible example?请参阅How to Ask,这表明,帮助他人重现问题...包含足够的代码以允许其他人重现问题。如果可以创建一个可以链接到的问题的实时示例(例如,在sqlfiddle.com 或jsbin.com 上),那么就这样做 - 但也要将代码复制到问题本身中。跨度> 抱歉,代码已编辑 【参考方案1】:您的直接问题是,如果您希望 UITableView
查看下载的数据并加载相应的单元格,则需要致电 reloadData()
。您可以放入网络调用的完成处理程序,或在 hotels
属性上的 didSet
中。
此外,您不应该将responseJSON
用于Decodable
类型,它是多余的。相反,您应该使用 responseDecodable
并传递您要解析的类型:responseDecodable(of: HotelData.self) response in ...
。
【讨论】:
以上是关于请求 Alamofire的主要内容,如果未能解决你的问题,请参考以下文章