Получить все события в календаре 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 *AppointmentTitle=@"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 месяца назад. Внезапно, когда я возвращаюсь, чтобы проверить это, это не сработало. Я что-то пропустил? или есть какая-то ошибка в моем коде?

Мне нужна твоя помощь, плз..

1 ответ

Решение

Наконец я получил ответ, я думаю, что Apple сделала что-то в разрешении (В 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!");
         }
     }];
}
Другие вопросы по тегам