2013-11-01 6 views
0

매버릭스로 업그레이드 한 후 내 코드가 캘린더에 이벤트를 더 이상 성공적으로 추가하지 않습니다. Mavericks 개발자 릴리스 노트를 통해이 문제와 관련된 구체적인 문서를 찾지 못했습니다.캘린더로 EKEvent 보내기

이 코드가 작동하는 방법을 알고 계십니까?

//Send new event to the calendar 
NSString   *calEventID; 

EKEventStore  *calStore = [[EKEventStore alloc]initWithAccessToEntityTypes:EKEntityTypeEvent]; 
EKEvent   *calEvent = [EKEvent eventWithEventStore:calStore]; 


//Calendar Values 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateStyle:NSDateFormatterShortStyle]; 
[dateFormatter setTimeStyle:NSDateFormatterShortStyle]; 


calEvent.title  = @"TITLE"; 
calEvent.startDate = [NSDate date]; 
calEvent.endDate = [NSDate date]; 
calEvent.notes  = @"Here are some notes"; 


[calEvent setCalendar:[calStore defaultCalendarForNewEvents]]; 
calEventID = [calEvent eventIdentifier]; 


NSError *error = nil; 
[calStore saveEvent:calEvent span:EKSpanThisEvent commit:YES error:&error]; 
[calStore commit:nil]; 

답변

3

initWithAccessToEntityTypes:는 OS X에서 더 이상 사용되지 않습니다 10.9 OS X 10.9 소개 보안 당신이 실제로 전에 EventKit API를 사용할 수있는 권한을 요청해야 OS X 10.9에,이다 아이폰 OS 6에 도입 된 것과 유사한 기능을하기 때문에 이벤트와 상호 작용합니다. 이렇게하려면 -[EKEventStore requestAccessToEntityType:completion:] 메서드를 사용합니다.

그래서 당신과 같이 보일 것이다 사용할 것 코드 : 이벤트 저장 완료 콜백 임의의 큐에 일어날 수 있기 때문에 주요 큐에

EKEventStore *eventStore = [[EKEventStore alloc] init]; 
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     // Event creation code here. 
    }); 
}]; 

디스패치입니다. 문서를 here에서 읽을 수 있습니다.

-[EKEventStore requestAccessToEntityType:completion:]은 OS X 10.9에서만 사용 가능하기 시작 했으므로 10.8을 지원해야하는 경우 몇 가지 버전 확인을 통해 사용 권한 요청이 필요한지 여부를 결정해야합니다.

+0

감사합니다. 여기있는 모든 것은 매력처럼 작동했습니다. – user2228755