2013-10-31 1 views
0

최근에 iOS7의 EKEventStore에서 EKCalendar 객체를받지 못했습니다. iOS 6.x.x에서는 동일한 코드 스 니펫에 문제가 없습니다. defaultCalendarForNewEvents에 액세스하려고 할 때 - 예상대로 단일 EKCalendar 객체를받습니다.iOS7의 EKEventStore에서 EKCalendars를 검색 할 수 없습니다.

엔티티 유형 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]]; 
} 

나는 calendarsArray에 0 오브젝트를받을 수 없습니다. 나는 또한 Local 또는 CalDAV 타입의 모든 EKSources를 ("source calendarsForEntityType :"- 같은 공백 (0 개 객체 포함) 세트가 있음) "실행"하여 얻으려고했다.

그건 그렇고 - 캘린더에 대한 액세스 권한이 부여됩니다.

제안 사항?

+0

iPhone 4 및 iPhone 5 (둘 다 iOS 7.0.3 실행)에서 발생합니다. 또한 두 장치 모두 CalDAV를 통해 두 개의 캘린더가 추가로 연결됩니다. – Robert

+0

또한 다른 테스트 (addtional app 작성 등)를 실행하는 중 로컬 저장소에 달력을 만들 수없는 것으로 나타났습니다. – Robert

답변

1

간략한 조사를 통해 문제가 코드에 없다는 것을 알게되었습니다. 문제는 iOS 7.0.3 자체에서 발생합니다.

iDevice에서 모든 동기화 된 캘린더를 삭제하고 모든 캘린더를 다시 추가하면 기본 캘린더 응용 프로그램과 내가 만든 캘린더 모두에 다시 표시됩니다. 이 작업을 수행 한 후 내 코드는 EKSources 또는 EKEventStore 자체를 통해 캘린더에 액세스하는 방법에 의존하지 않고 EventStore에서 캘린더를 검색 할 수있었습니다.

관련 문제