【问题标题】:Past events in EKCalendarEKCalendar 过去的活动
【发布时间】:2013-12-05 11:23:19
【问题描述】:

我试图从确定的EKCalendar 中获取所有事件,但是如果我调用eventsMatching Predicate: 并使用predicateForEventsWithStartDate:endDate:calendars: 生成的谓词和过去的'startDate' 我得到一个空对象。这是一个错误?还是我无法找回过去的事件?

编辑(NSData 声明):

[[self eventStore] predicateForEventsWithStartDate:[NSDate distantPast] endDate:[NSDate distantFuture] calendars:syncedCalendars]

【问题讨论】:

  • 你能发布你的 nsdate 声明和 nspredictate 吗?
  • 按您的要求编辑
  • 可能时间跨度太长了。 distantPast 为我返回第 1 年的 12 月 30 日,distantFuture 返回 4001 年的 1 月 1 日。您是否尝试过使用较小的时间跨度,例如过去 3 个月左右?
  • 使用 [NSDate dateWithTimeIntervalSince1970:0] 也返回 null。我可以使用的“过去”日期是 2010 年 1 月 1 日。我会知道为什么
  • 编辑:不,即使 2010 年 1 月 1 日返回 NULL。我会提交一个错误

标签: ios objective-c ekevent ekeventstore


【解决方案1】:

尝试将您的代码更改为:

    NSDate* futureDate =  [NSDate dateWithTimeIntervalSinceNow:[[NSDate distantFuture] timeIntervalSinceReferenceDate]];
    [[self eventStore] predicateForEventsWithStartDate:[NSDate date] endDate: futureDate calendars:syncedCalendars]

还要确保您的 syncedCalendars 是 NSArray 类型。

【讨论】:

  • 不是这个问题,我要检索过去的事件。传递 [NSDate date] 不会检索过去的事件。
  • 我认为 [NSDate distinctPast] 调用存在一些问题。我也无法让它工作。也许尝试从 [NSDate date] 中减去时间间隔以获取过去的日期。
  • 是的,我做了什么 :) 但我无法在 2010 年 1 月 1 日更进一步,即使 29/12/2009 我得到一个空数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
  • 1970-01-01
相关资源
最近更新 更多