在Event Kit中跨越多天的全天事件显示在当天事件列表的底部。
例如,如果我从1月1日到1月3日有一整天的全日活动,那么请查看1月2日的日历。
1月2日
代码
let startDate = NSCalendar.currentCalendar().startOfDayForDate(Dates.dateObject)
let endDate = startDate.dateByAddingTimeInterval(Double((60 * 60 * 24))
let calendars = eventStore.calendarsForEntityType(.Event)
var selectedCalendars = [EKCalendar]()
for cal in calendars {
if (NSUserDefaults.standardUserDefaults().boolForKey(cal.calendarIdentifier) != false) {
selectedCalendars.append(cal)
}
}
let eventsPredicate = eventStore.predicateForEventsWithStartDate(startDate, endDate: endDate, calendars: selectedCalendars)
events = eventStore.eventsMatchingPredicate(eventsPredicate)
答案 0 :(得分:1)
要解决此问题,谓词的开始日期和结束日期必须为00:00:00到23:59:59(而不是00:00:00到00:00:00)。
代码修改如下。
let startDate = NSCalendar.currentCalendar().startOfDayForDate(Dates.dateObject)
let endDate = startDate.dateByAddingTimeInterval(Double(((60 * 60 * 24) - 1))
let calendars = eventStore.calendarsForEntityType(.Event)
var selectedCalendars = [EKCalendar]()
for cal in calendars {
if (NSUserDefaults.standardUserDefaults().boolForKey(cal.calendarIdentifier) != false) {
selectedCalendars.append(cal)
}
}
let eventsPredicate = eventStore.predicateForEventsWithStartDate(startDate, endDate: endDate, calendars: selectedCalendars)
events = eventStore.eventsMatchingPredicate(eventsPredicate)