2013-12-23 5 views
1

나는 일정 응용 프로그램을 만들고 특정 이벤트를 저장하려고 할 때 이상한 오류가 발생하는 경우가 있습니다. 아직 문제를 복제하는 이벤트를 안정적으로 생성 할 수는 없지만, 행운을 빌어서 (다시 부르는 것이 좋음) 버그에 다시 참여했습니다.EventKit, 이벤트 저장 중 오류 : 반복 필드를 변경할 수 없습니다.

특정 이벤트를 저장하면 반복 규칙을 저장하지 않기 때문에 문제가 발생합니다. 대부분의 이벤트는 완벽하게 정상적으로 저장되며 문제가 발생하지 않습니다.

다음은 디버그 결과입니다. 첫 번째 섹션 인 EVENT는 편집을 위해 열리는 이벤트 객체를 설명합니다. 두 번째 섹션 인 "저장 대상 이벤트"는 이벤트 객체를 저장하기 직전에 설명합니다. 마지막 섹션 인 EVENT SAVING ERROR는 EKEventStore saveEvent:span:commit:error: 메소드로 설정된 오류를 설명합니다.

도움을 주시면 감사하겠습니다.

2013-12-23 11:47:23.641 planner[4360:60b] EVENT: EKEvent <0x1554d5d0> 
{ 
    EKEvent <0x1554d5d0> 
{ title =  Test repeat m; 
    location =  ; 
    calendar =  EKCalendar <0x1564cfc0> {title = Calendar; type = Local; allowsModify = YES; color = #CC73E1;}; 
    alarms =  (null); 
    URL =   (null); 
    lastModified = 2013-12-23 17:31:29 +0000; 
    timeZone =  America/Chicago (CST) offset -21600 
}; 
    location =  ; 
    startDate = 2013-12-23 07:00:00 +0000; 
    endDate =  2013-12-23 08:00:00 +0000; 
    allDay =  0; 
    floating =  0; 
    recurrence = (null); 
    attendees = (null) 
}; 

2013-12-23 11:47:32.480 planner[4360:60b] EVENT TO BE SAVED: EKEvent <0x1554d5d0> 
{ 
    EKEvent <0x1554d5d0> 
{ title =  Test repeat m; 
    location =  ; 
    calendar =  EKCalendar <0x1564cfc0> {title = Calendar; type = Local; allowsModify = YES; color = #CC73E1;}; 
    alarms =  (null); 
    URL =   (null); 
    lastModified = 2013-12-23 17:31:29 +0000; 
    timeZone =  America/Chicago (CST) offset -21600 
}; 
    location =  ; 
    startDate = 2013-12-23 07:00:00 +0000; 
    endDate =  2013-12-23 08:00:00 +0000; 
    allDay =  0; 
    floating =  0; 
    recurrence = EKRecurrenceRule <0x155a3d10> RRULE FREQ=DAILY;INTERVAL=1; 
    attendees = (null) 
}; 

2013-12-23 11:47:32.492 planner[4360:60b] EVENT SAVING ERROR: Error Domain=EKErrorDomain Code=28 "The repeat field cannot be changed." UserInfo=0x155826a0 {NSLocalizedDescription=The repeat field cannot be changed.} 

답변

6

AHA! 나는 마침내 이것을 알아 냈다! 반복 이벤트가 범위 EKSpanThisEvent과 함께 저장되면 "분리"됩니다. 이는 [event isDetached]으로 전화하여 확인할 수 있습니다. 분리 이벤트에 대한 반복 규칙을 저장할 수 없습니다.

내 응용 프로그램에서 사용한 솔루션은 사용자가 분리 이벤트를 편집 할 때 반복 규칙을 설정하기위한 컨트롤을 숨기는 것입니다. 이것은 애플이 기본 캘린더 앱에서 사용하는 것과 같은 솔루션 인 것 같다.