我有一个事件(称为“测试事件”),从11月6日凌晨2点开始,到11月24日上午10点结束。当我试图通过指定一天的范围来找到事件时,我可以找到它所有日子(11月6日,11月7日,11月23日)除了11月24日。
每次用户选择新的一天时都会调用以下方法:
- (void)loadItemsFromDate:(NSDate *)fromDate toDate:(NSDate *)toDate
{
NSLog(@"loadItemsFromDate");
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
NSLog(@"%@ to %@", [dateFormatter stringFromDate:fromDate], [dateFormatter stringFromDate:toDate]);
// Create the predicate from the event store's instance method
NSPredicate *predicate = [self.store predicateForEventsWithStartDate:fromDate
endDate:toDate
calendars:nil];
NSLog(@"predicateFormat: %@", [predicate predicateFormat]);
// Fetch all events that match the predicate
self.currentDayEvents = [self.store eventsMatchingPredicate:predicate];
NSLog(@"single day events:");
for(EKEvent *event in self.currentDayEvents)
{
NSLog(@"title: %@, start: %@, end: %@", event.title, [dateFormatter stringFromDate:event.startDate], [dateFormatter stringFromDate:event.endDate]);
}
NSLog(@"\n");
}
以下是用户选择11月6日时的日志(可以找到“测试事件”):
loadItemsFromDate
11/6/12, 12:00 AM to 11/6/12, 11:59 PM
predicateFormat: EKEventPredicate start:11/6/12, 12:00 AM; end:11/6/12, 11:59 PM; cals:(null)
single day events:
title: Vote, start: 11/6/12, 12:00 AM, end: 11/6/12, 11:59 PM
title: Test Event, start: 11/6/12, 2:00 AM, end: 11/24/12, 10:00 AM
11月7日到22日所有看起来都与此日志相似,即11月23日(可以找到“测试事件”):
loadItemsFromDate
11/23/12, 12:00 AM to 11/23/12, 11:59 PM
predicateFormat: EKEventPredicate start:11/23/12, 12:00 AM; end:11/23/12, 11:59 PM; cals:(null)
single day events:
title: Test Event, start: 11/6/12, 2:00 AM, end: 11/24/12, 10:00 AM
这是11月24日的日志(由于它没有返回“测试事件”,因此没有按预期工作):
loadItemsFromDate
11/24/12, 12:00 AM to 11/24/12, 11:59 PM
predicateFormat: EKEventPredicate start:11/24/12, 12:00 AM; end:11/24/12, 11:59 PM; cals:(null)
single day events:
为什么即使事件在当天上午10点结束,也没有找到11月24日的活动?我正在运行iOS 6.0.1。
答案 0 :(得分:2)
我相信iOS代码中存在一个错误。我重现的步骤:
我不确定如何解决此问题,但我可以验证我的应用中的代码是否与您的代码存在相同的问题。