因此使用Alamofire和SwiftyJSON,我能够从JSON源中提取数据并将其分配给表格视图。我现在需要做的是按日期过滤结果。这个想法是获取今天的日期,并且只显示等于或大于今天的日期的项目。
现在,当我查询来源时使用Alamofire,我会得到以下信息
{
"mlb_schedule": {
"columns": [
"awayTeam",
"homeTeam",
"date",
"time"
],
"records": [
[
"TOR",
"BOS",
"7/14/18",
""
],
[
"KCA",
"CHA",
"7/14/18",
""
],
[
"TBA",
"MIN",
"7/14/18",
""
],
[
"MIL",
"PIT",
"7/14/18",
""
],
[
"ARI",
"ATL",
"7/14/18",
""
],
我创建了一个getDate函数来提取当前日期并发送。在以下代码中将其更改为var dateToday。我的问题所在的Alamofire中,我似乎无法选择dict值来按响应进行过滤,如下面的代码所示。
var arrRes = [Any]()
public var baseballSelectedRow: [String] = []
var dateToday = ""
override func viewDidLoad() {
super.viewDidLoad()
getDate()
//Alamofire
Alamofire.request("http://52.34.250.4/mlb/api.php/mlb_schedule").responseJSON { (responseData) -> Void in
if((responseData.result.value) != nil) {
let swiftyJsonVar = JSON(responseData.result.value!)
if let resData = swiftyJsonVar["mlb_schedule"]["records"].arrayObject {
self.arrRes = resData.filter { $0.dict[2] <= dateToday}
}
if self.arrRes.count > 0 {
self.tableView.reloadData()
}
}
}
}
func getDate() {
let currentDate = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .short
let convertableDate = dateFormatter.string(from: currentDate)
dateToday = convertableDate
}
} 扩展SwarmBaseballViewController:UITableViewDataSource,UITableViewDelegate { func tableView(_ tableView:UITableView,numberOfRowsInSection部分:Int)-> Int { 返回arrRes.count }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: "SwarmListTableViewCell") as? SwarmListTableViewCell {
if let dict = arrRes[indexPath.row] as? [Any] {
if dict.count > 2 {
cell.awayLabel?.text = dict[0] as? String
cell.homeLabel?.text = dict[1] as? String
cell.dateLabel?.text = dict[2] as? String
cell.timeLabel?.text = dict[3] as? String
}
}
return cell
} else {
return SwarmListTableViewCell()
}
}
我意识到我的语法是错误的,但是,我一生都找不到如何/为什么?