2011-11-15 2 views
0

고유 한 sqlite 데이터베이스가있는 회의 플래너 앱이 있으며 캘린더 프레임 워크의 EKEvent에 자체적으로 연결됩니다. 내 회의 데이터의 외래 키로 이벤트 식별자를 사용하고 있습니다. 이 문제는 사용자가 캘린더 응용 프로그램에서 일정의 캘린더를 변경할 때 발생합니다. 식별자가 바뀌고 내 앱 외부에서 변경된 이후로 바뀌 었음을 알 수있는 방법이 없습니다. 사람이 어떤 아이디어다른 캘린더를 선택할 때 EKEvent 식별자가 변경됩니다.

아이폰 OS 5.0으로
+0

동일한 문제가 발생했습니다 .... – Maulik

답변

1

문서는 경고 확실성 이벤트를 식별 할 수있는 방법이없는이 있으면 알려 주시기 바랍니다 "그 이벤트 변경 달력, 그 식별자 대부분의 경우 변화한다. "

또 다른 문제는 반복 이벤트의 모든 인스턴스가 동일한 식별자를 가짐을 의미합니다. -[EKEventStore eventWithIdentifier:] 첫 번째 인스턴스를 반환하는 것 같습니다. (나는 심지어 식별자가없는 이벤트를 보았고, 정확한 원인이 무엇인지 기억할 수 없습니다.)

-eventWithIdentifier:이 반복되지 않는 이벤트를 반환하면 잘 처리 할 수 ​​있습니다. 그렇지 않은 경우 두 가지 모두를 둘러싼 가장 쉬운 방법은 이벤트에 대한 모든 캘린더를 거의 동시에 검색하고 발견 기준을 사용하여 가장 일치하는 항목을 결정하거나 일치 항목이 충분하지 않으면 해당 이벤트를 선택하도록 사용자에게 요청하는 것입니다.

반복 일정의 단일 인스턴스를 수정할 때 Google 캘린더가 수행하는 작업 (새로운 식별자로 이벤트를 생성하고 원래 이벤트의 반복 정보에 "구멍"을 추가 할 수 있음)을 확인하는 것이 좋습니다 당신의 발견 적 방법).

0

지금 당장이 문제에 직면 해 있습니다. 내 앱의 내부 DB와 EventStore를 동기화하려고합니다. 내 솔루션은 EKEvents와 이벤트를 앱 내부에서 매핑하는 것입니다. EKEvents와 일치하지 않는 이벤트는 삭제되고, 일치하지 않는 모든 EKEvents가 추가 될 것입니다. 이렇게하면 수정 중에 방금 수정되는 EKEvents가 동기화 중에 추가됩니다.