ios - EKEvent 获取当前事件 iOS7

标签 ios ios7 ekevent ekeventkit ekeventstore

所以我需要获取日历中的当前事件。 I.E - 一个已经开始但还没有结束的事件。我写了一些代码,但它不起作用。 通过调试,我注意到我的 oneDayAgo 变量为 nil,我不明白为什么。 oneWeekFromNow 变量很好。

这是我写的方法:

-(void)getCurrentEvent{
// Get appropriate calendar
[self.store requestAccessToEntityType:EKEntityTypeEvent
                      completion:^(BOOL granted, NSError *error) {
                          NSCalendar *calendar = [NSCalendar currentCalendar];
                          NSDateComponents *oneDayAgoComponents = [[NSDateComponents alloc] init];
                          oneDayAgoComponents.day -=1;
                          NSDate *oneDayAgo = [calendar dateByAddingComponents:oneDayAgoComponents
                                                                        toDate:[NSDate date]
                                                                       options:0];
                          NSDateComponents *oneWeekFromNowComponents = [[NSDateComponents alloc] init];
                          oneWeekFromNowComponents.week = 1;
                          NSDate *oneWeekFromNow = [calendar dateByAddingComponents:oneWeekFromNowComponents
                                                                             toDate:[NSDate date]
                                                                            options:0];
                          NSPredicate *predicate = [self.store predicateForEventsWithStartDate:oneDayAgo
                                                                                       endDate:oneWeekFromNow
                                                                                     calendars:nil];

                          NSMutableArray *currentEvens = [[NSMutableArray alloc]init];
                          // Fetch all events that match the predicate
                          [self.store enumerateEventsMatchingPredicate:predicate usingBlock:^(EKEvent *event, BOOL *stop) {
                              if (([event.startDate compare:[NSDate date]] == NSOrderedDescending) &&
                                  ([[NSDate date] compare:event.endDate] == NSOrderedDescending)) {
                                  [currentEvens addObject:event];
                              }

                          }];


                          self.lblEvent.text = [NSString stringWithFormat:@"%@", currentEvens];
                          [self.view reloadInputViews];

                      }];

最佳答案

试试这个:

NSDateComponents *oneDayAgoComponents = [[NSDateComponents alloc] init];
oneDayAgoComponents.day = -1;

关于ios - EKEvent 获取当前事件 iOS7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21172885/

相关文章:

ios - Apple Pay 中的 Braintree Drop 崩溃

ios - UIActionSheet不阻止外部触摸, "under"

iphone - 设置视网膜背景图像放大显示

ios - 将 EKParticipants 添加到 EKEvent

iphone - 哪个 InApp 购买套件用于杂志发行产品?

ios - ABPeoplePickerNavigationController。需要在同一个 View Controller 中显示联系人

iOS:动画图标模型 "springboard"

ios - 我可以让我的 UIView 的框架匹配它的曾祖 parent 吗?

iphone - predicateForEventsWithStartDate 不起作用

ios - 有没有办法复制EKEvent,或者让它符合NSCopying协议(protocol)