在swift4中按数组项从Alamofire发出过滤结果?

时间:2018-08-20 23:35:16

标签: swift alamofire swifty-json

因此使用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()
    }
}

我意识到我的语法是错误的,但是,我一生都找不到如何/为什么?

0 个答案:

没有答案