Не удается получить EKCalendars из EKEventStore в iOS7

Недавно я узнал, что не получаю никаких объектов EKCalendar из EKEventStore в iOS7. В iOS 6.x.x нет проблем с одним и тем же фрагментом кода. Когда я пытаюсь получить доступ к defaultCalendarForNewEvents, я получаю один объект EKCalendar (как и ожидалось).

Я запрашиваю доступ к объекту типа EKEntityTypeEvent.

Фрагмент:

__block NSMutableArray *calendarsArray = nil;

if ([self.eventsStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {
    [self.eventsStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
        if (granted) {
            EKAuthorizationStatus status = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];

            if (status == EKAuthorizationStatusAuthorized) {
                calendarsArray = [[NSMutableArray alloc] initWithArray:[self.eventsStore calendarsForEntityType:EKEntityMaskEvent]];
            }
        } else {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error!" message:@"You haven't granted access to calendars. Expected things are not going to happen." delegate:nil cancelButtonTitle:@"I understand" otherButtonTitles:nil];
            [alert show];
        }
    }];
} else {
    calendarsArray = [NSMutableArray arrayWithArray:[self.eventsStore calendarsForEntityType:EKEntityTypeEvent]];
}

Я получаю 0 объектов в calendarsArray. Я также пытался получить его, "пропустив" все EKSources типа Local или CalDAV ([source calendarsForEntityType:] - получил тот же пустой набор (0 объектов, содержащих)).

Кстати - доступ к календарям ДАЕТСЯ.

Какие-либо предложения?


person Robert    schedule 31.10.2013    source источник
comment
Это происходит на iPhone 4 и iPhone 5 (оба работают под управлением iOS 7.0.3). Кроме того, на обоих устройствах дополнительно подключены два календаря через CalDAV.   -  person Robert    schedule 31.10.2013
comment
Кроме того, выполняя другие тесты (написание дополнительных приложений и т. д.), я заметил, что также невозможно создать календарь в локальном хранилище.   -  person Robert    schedule 06.11.2013


Ответы (1)


После непродолжительного расследования я выяснил, что проблема была не в коде. Похоже, проблема в самой iOS 7.0.3.

После удаления всех синхронизированных календарей с iDevice и добавления его обратно все календари отображались как в родном приложении Календарь, так и в том, что я сделал. После выполнения этого действия мой код смог получить календари из EventStore независимо от метода доступа к календарям (через EKSources или сам EKEventStore).

person Robert    schedule 26.11.2013