首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >eventsMatchingPredicate在跨越多天的事件中找不到最后的日期

eventsMatchingPredicate在跨越多天的事件中找不到最后的日期
EN

Stack Overflow用户
提问于 2012-11-07 07:15:52
回答 1查看 980关注 0票数 3

我有一个事件(称为“测试事件”),从凌晨2点开始。11月6日,上午10点结束。11月24日。当我试图通过指定一天的范围来查找事件时,我可以找到所有日子(11月6日、11月7日、11月23日)的(11月24日除外)。

每当用户选择新的一天时,都会调用以下方法:

代码语言:javascript
复制
- (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日时的日志(可以找到"Test“):

代码语言:javascript
复制
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日(可以找到“测试事件”):

代码语言:javascript
复制
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日的日志(不像预期的那样工作,因为它没有返回"Test“):

代码语言:javascript
复制
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:

为什么不找到11月24日的活动,即使活动在上午10点结束。那一天?我正在运行iOS 6.0.1。

EN

回答 1

Stack Overflow用户

发布于 2012-11-18 00:54:18

不幸的是,我相信iOS代码中存在一个bug。我的复制步骤:

  1. 按照上面描述的基本iOS日历应用程序创建您的测试事件。
  2. 看看月视图,你会发现在11/24/2012中没有点/标记.这对我来说意味着有可疑的事情发生了。然后单击第24块,并注意事件实际上是列出的。
  3. 然后将您的事件更改为全天活动(从开始时间有效地删除凌晨2点,从结束时间移除10点)。
  4. 看看月视图,你会注意到现在有一个点/标记在11/24/2012。

我还不知道如何破解这个问题,但我可以验证我的应用程序中的代码是否显示出与您相同的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13264877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档