¿Cómo comparar las fechas de la API JSON con FSCalendar y mostrar eventos en la vista de tabla?

He mostrado puntos de eventos en el calendario pero no puedo mostrar los mismos eventos según el mes en la vista de tabla, quiero mostrar esos eventos como si cambiamos el mes y los eventos de datos de vista de tabla deberían cambiarse, estoy confundido sobre cómo se puede hacer. Estoy usando FSCalendar para mostrar eventos como punto y en vista de tabla.

import UIKit
import Alamofire
import SwiftyJSON
import ToastSwift

class CalendarViewController: UIViewController , UITableViewDataSource, UITableViewDelegate, FSCalendarDataSource, FSCalendarDelegate , FSCalendarDelegateAppearance{
    @IBOutlet weak var tableview: UITableView!

    @IBOutlet weak var menu: UIBarButtonItem!

    @IBOutlet weak var calendar: FSCalendar!

    var strcond : NSString?


    var calendarEvents : [Calendars] = []

    fileprivate lazy var dateFormatter2: DateFormatter = {
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd"


        return formatter
    }()


    override func viewDidLoad() {
        super.viewDidLoad()

        menu.target = self.revealViewController()

        menu.action = #selector(SWRevealViewController.revealToggle(_:))

        if self.revealViewController() != nil {

            self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
            self.view.addGestureRecognizer(self.revealViewController().tapGestureRecognizer())
        }



        getCalendarEvents()



        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func viewWillAppear(_ animated: Bool) {

    }
    override func viewDidAppear(_ animated: Bool) {
          }

    func getCalendarEvents(){

        let url = NSURL(string: "http://******/api/academics/getEvents")
        var request = URLRequest(url: url! as URL)
        request.httpMethod = "GET"
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        Alamofire.request(request).responseJSON(){ response in
            switch response.result{
            case.success(let data):
                print("success",data)

                let myresponse = JSON(data)

                for calenadar in myresponse.array!
                {
                    let calenadarObj = Calendars(calendarsJson: calenadar)
                    self.calendarEvents.append(calenadarObj)
                    print("notice",calenadarObj.Title)
                    self.compareDate(date: calenadarObj.StartDate)

            }
                self.tableview.reloadData()

            case.failure(let error):
                print("Not Success",error)
            }

        }
    }

    func compareDate(date : String){
        let date = date

        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
        let dateFromString : NSDate = dateFormatter.date(from: date)! as NSDate
        dateFormatter.dateFormat = "yyyy-MM-dd"
        let datenew = dateFormatter.string(from: dateFromString as Date)
        print("datee",datenew)



    }



    func calendar(_ calendar: FSCalendar, willDisplay cell: FSCalendarCell, for date: Date, at position: FSCalendarMonthPosition) {

        let dateFormatter3 = DateFormatter()

        dateFormatter3.dateFormat = "yyyy-MM"
        let dateString3 = dateFormatter3.string(from: date)

        //print("datenew1",dateString3)


        strcond  = dateString3 as NSString

        print("datenew1",strcond!)

    }


    func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {


        let dateString = self.dateFormatter2.string(from: date)




        for d in calendarEvents{
            let date = d.StartDate

            let dateFormatter = DateFormatter()
            dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
            let dateFromString : NSDate = dateFormatter.date(from: date)! as NSDate
            dateFormatter.dateFormat = "yyyy-MM-dd"
            let datenew = dateFormatter.string(from: dateFromString as Date)


        if datenew.contains(dateString) {


            return 1

        }
    }
        return 0

    }
    func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, eventColorFor date: Date) -> UIColor? {
        let dateString = self.dateFormatter2.string(from: date)






        for d in calendarEvents{
            let date = d.StartDate

            let dateFormatter = DateFormatter()
            dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
            let dateFromString : NSDate = dateFormatter.date(from: date)! as NSDate
            dateFormatter.dateFormat = "yyyy-MM-dd"
            let datenew = dateFormatter.string(from: dateFromString as Date)


            print("new  calendar",dateString)


        if datenew.contains(dateString) {
            return UIColor.purple
        }
        }
        return nil
    }


    func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
        if monthPosition == .previous || monthPosition == .next {
            calendar.setCurrentPage(date, animated: true)

            print("title date",date)
        }
    }



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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CalendarTableViewCell
         let getdata = calendarEvents[indexPath.row]
        let date = getdata.StartDate
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
        let dateFromString : NSDate = dateFormatter.date(from: date)! as NSDate
        dateFormatter.dateFormat = "dd-MM-yyyy"
        let datenew = dateFormatter.string(from: dateFromString as Date)

        calendar.scope = .month
        print("asdas",calendar.scope = .month)

        cell.date_txt.text = datenew
        cell.events_txt.text = getdata.Title
        calendar.reloadData()
        return cell

    }
}

He mostrado eventos en puntos como tengo imagen

En la imagen, he mostrado todos los datos de datos de eventos JSON api, pero debe estar de acuerdo con los datos del mes calendario. si el calendario se desliza al próximo mes, los datos de la vista de tabla deberían cargarse en los eventos del mismo mes. ¿Cómo se puede hacer?

Respuestas a la pregunta(0)

Su respuesta a la pregunta