如何解决快速使用fscalendar从API响应中获取事件的值
我有fscalendar,它显示了从API响应预订的事件列表。 Json数据如下:
{
"status": 200,"schedule_data": {
"2020_08_16_1597485600": {
"schedule_date": "2020-08-16","nanny_id": 2,"shift_start": "06:00","shift_end": "13:00","schedule_id": 112
},"2020_08_16": {
"schedule_date": "2020-08-16","shift_start": "","shift_end": "","schedule_id": 0
},"2020_08_17_1597485600": {
"schedule_date": "2020-08-17","shift_end": "22:00","schedule_id": 113
},"2020_08_17": {
"schedule_date": "2020-08-17","2020_08_18": {
"schedule_date": "2020-08-18","2020_08_19": {
"schedule_date": "2020-08-19","2020_08_20": {
"schedule_date": "2020-08-20","2020_08_21": {
"schedule_date": "2020-08-21","2020_08_22": {
"schedule_date": "2020-08-22","2020_08_23": {
"schedule_date": "2020-08-23","2020_08_24": {
"schedule_date": "2020-08-24","2020_08_25": {
"schedule_date": "2020-08-25","2020_08_26": {
"schedule_date": "2020-08-26","2020_08_27": {
"schedule_date": "2020-08-27","2020_08_28": {
"schedule_date": "2020-08-28","2020_08_29": {
"schedule_date": "2020-08-29","2020_08_30": {
"schedule_date": "2020-08-30","2020_08_31": {
"schedule_date": "2020-08-31","schedule_id": 0
}
}
}
我已经根据schedule_id从这个api响应中获取了不等于零的事件,这样我有两个事件(16-8-2020,17-8-2020)并将它们存储在使用fscalendar委托方法在fscalendar上显示事件,如下所示:
func日历(_日历:FSCalendar,didSelect日期:日期,在月份位置:FSCalendarMonthPosition){
self.scheduleview.isHidden = false
self.mainview.addSubview(self.scheduleview)
self.todaydateLbl.text = "Availablity on " + self.formatter.string(from: date)
self.selectdate = self.formatter.string(from: date)
print("calendar did select date \(self.formatter.string(from: date))")
if monthPosition == .previous || monthPosition == .next {
calendar.setCurrentPage(date,animated: true)
}
} 我有一个视图,单击日期即显示为scheduleview。 如果事件已经存在,它将显示开始时间和结束时间值。 如何获取已经存在的事件的开始和结束时间。例如,当用户选择16-8-2020时,他应该能够看到现有事件的详细信息,该详细信息将通过API向他显示开始和结束时间响应。该怎么办? json解析代码如下:
let decoder = JSONDecoder()
do {
let user = try decoder.decode(ScheduleListModel.self,from: response.data!)
self.listdata = user
for schedule in self.listdata!.scheduleData {
if schedule.value.scheduleID != 0 {
self.eventsArray.append(schedule.value.scheduleDate!)
}
}
print("eventsarray is",self.eventsArray)
if self.eventsArray.count > 0
{
self.calendar.delegate = self
self.calendar.dataSource = self
self.calendar.reloadData()
}
} catch {
debugPrint(error)
}
如何从这些可用数据中获取详细信息?
解决方法
您的API响应中有"schedule_date": "2020-08-31"
,我假设您也保存在数据模型中。因此,当您从calendar(_ calendar: FSCalendar,didSelect date: Date
方法中获取所选日期时,请将其转换为模型中保存的格式并过滤数据模型。
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
let selectedDateString = formatter.string(from: date)
let selectedEvents = scheduleData.filter { ($0.value.scheduleId != 0) && ($0.value.scheduleDate == selectedDateString) }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。