2013-04-09 102 views
3

我有一个应用程序,通过按钮提醒患者他/她的约会。 如果病人点击了按钮,我想要提取患者日历中的所有事件以检查约会是否已经存在。如果不存在,我会创建活动。以开始日期获取iPhone日历中的所有事件

我知道如何将事件添加到日历中,但取回是返回零计数?

下面是我的代码:

//set start and end date 
NSDate* startDate = [NSDate date];//start from today 
NSDate* endDate = [NSDate dateWithTimeIntervalSinceNow:[[NSDate distantFuture] timeIntervalSinceReferenceDate]];//no end 
NSLog(@"S Date %@", startDate); 
NSLog(@"E Date %@", endDate); 

NSString *[email protected]"Appointment in Hospital at Pediatric Clinic"; 

EKEventStore *store = [[EKEventStore alloc] init]; 
NSArray *calendarArray = [store calendars]; 
NSPredicate *fetchCalendarEvents = [store predicateForEventsWithStartDate:startDate endDate:endDate calendars:calendarArray]; 
NSArray *eventList = [store eventsMatchingPredicate:fetchCalendarEvents]; 
BOOL IsFound; 
int EventsCount=eventList.count; 
for(int i=0; i < EventsCount; i++) 
{ 
    NSLog(@"Event Title:%@", [[eventList objectAtIndex:i] title]); 
    if ([[[eventList objectAtIndex:i] title] isEqualToString:AppointmentTitle])//check title 
    { 
     IsFound=TRUE; 
     break; 
    } 
    else 
    { 
     IsFound=FALSE; 
    } 
} 

此代码工作正常2个月前。突然,当我回来测试它时,它不起作用。我错过了什么?或者我的代码中有任何错误?

我需要你的帮助PLZ ..

+0

任何答复pleeeeease? – 2013-04-11 11:41:57

回答

10

Finaaaaaaaally我得到了答案, 我认为苹果的确在许可 ( 东西在iOS 5中,您只能在事件存储访问活动(EKEntityTypeEvent) 。不像在iOS 6中,在那里你可以访问提醒(EKEntityTypeReminder)但是你需要下面的代码,至少也得授予1次 )“由WrightsCS回答”

找到下面的代码: -

EKEventStore *store = [[EKEventStore alloc] init]; 


// Get the appropriate calendar 
NSCalendar *calendar = [NSCalendar currentCalendar]; 


if ([store respondsToSelector:@selector(requestAccessToEntityType:completion:)]) 
{ 
    /* iOS Settings > Privacy > Calendars > MY APP > ENABLE | DISABLE */ 
    [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) 
    { 
     if (granted) 
     { 
      NSLog(@"User has granted permission!"); 
      // Create the start date components 
      NSDateComponents *oneDayAgoComponents = [[NSDateComponents alloc] init]; 
      oneDayAgoComponents.day = -1; 
      NSDate *oneDayAgo = [calendar dateByAddingComponents:oneDayAgoComponents 
                  toDate:[NSDate date] 
                  options:0]; 

      // Create the end date components 
      NSDateComponents *oneYearFromNowComponents = [[NSDateComponents alloc] init]; 
      oneYearFromNowComponents.year = 1; 
      NSDate *oneYearFromNow = [calendar dateByAddingComponents:oneYearFromNowComponents 
                   toDate:[NSDate date] 
                   options:0]; 

      // Create the predicate from the event store's instance method 
      NSPredicate *predicate = [store predicateForEventsWithStartDate:oneDayAgo 
                    endDate:oneYearFromNow 
                    calendars:nil]; 

      // Fetch all events that match the predicate 
      NSArray *events = [store eventsMatchingPredicate:predicate]; 
      NSLog(@"The content of array is%@",events); 
     } 
     else 
     { 
      NSLog(@"User has not granted permission!"); 
     } 
    }]; 
} 
+0

谢谢!它帮助我很多.. – Clement 2017-06-14 14:42:53

相关问题