Получить все события в календаре 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!");
}
}];
}