【发布时间】:2018-12-16 22:22:50
【问题描述】:
在我的应用程序中,我正在使用 Alamofire 实现拉取刷新,它正在刷新但不幸的是没有带回任何数据。我究竟做错了什么?我肯定错过了一些东西。
这里是代码
我的班级地震列表
var earthquake: Earthquake?
var refresh = UIRefreshControl()
上viewDidLoad()
// Refresh Control
//let refreshControl = UIRefreshControl()
refresh.tintColor = UIColor.yellow
refresh.addTarget(self, action: #selector(refreshData), for: UIControlEvents.valueChanged)
if #available(iOS 10.0, *) {
self.tableView.refreshControl = (self.refresh)
} else {
self.tableView.addSubview(self.refresh)
}
viewDidLoad() 上的 Alamofire
Alamofire.request("http://www.seismicportal.eu/fdsnws/event/1/query?limit=50&format=json").responseJSON { response in
//print("Request: \(String(describing: response.request))") // original url
if let data = response.data{
do {
self.earthquake = try
JSONDecoder().decode(Earthquake.self, from: data)
print("features data: \(String(describing: self.earthquake?.features))")
// print("data: \(self.features.count)")
self.tableView.reloadData()
self.refresh.endRefreshing()
}
catch{}
}
}
}
和objc的函数
@objc func refreshData() {
self.tableView.reloadData()
self.refresh.endRefreshing()
}
【问题讨论】:
-
refreshData()不执行新的 Alamofire 请求。那是正常的。 -
您所做的只是在 tableView 上调用
reloadData。您实际上并未尝试通过 API 加载任何新数据。使用 Alamofire 发出请求,完成后重新加载 tableView -
只需在 refreshData() 函数中添加 Alamofire.request 方法并在 viewDidLoad() 中调用即可。
-
创建 1 个方法并将 API 调用代码从
viewDidLoad移动到此方法内部,并在viewDidLoad和refreshData方法中调用该方法,目前您只是重新加载 tableview。 -
谢谢大家的帮助……我会为可能有同样问题的人更新代码
标签: ios swift xcode alamofire get-request