2014-03-13 44 views
1

我從web服務接收一些事件。我使用Eventkit以編程方式添加這些事件。我有一個Add按鈕調用代碼來添加收到的事件。但是,重複添加操作會重複事件而不是合併(如果事件已存在)。如何使用事件包處理重複事件

如何避免重複事件?

+0

當你點擊添加事件按鈕時,你需要檢查事件是否已經存在,然後你需要插入它。您可以使用其唯一標識符檢查事件。 – RAJA

+0

[this](http://stackoverflow.com/q/6077613/2389078)和[that](http://stackoverflow.com/q/19496772/2389078)可能會有所幫助。 – DroidDev

+0

顯示您的代碼以添加事件。 – Amar

回答

3

您必須在添加之前檢查現有事件。下面的代碼顯示瞭如何做到這一點。我已經檢查過標題和開始日期以確定事件,您可以根據需要使用更多參數。

EKEventStore *eventStore = [[EKEventStore alloc] init]; 
NSPredicate *predicate = [eventStore predicateForEventsWithStartDate:[startDate dateByAddingTimeInterval:-60] 
                  endDate:[endDate dateByAddingTimeInterval:60] calendars:nil]; 
    NSArray *events = [eventStore eventsMatchingPredicate:predicate]; 
    bool found = NO; 
    for (EKEvent *evt in events) 
    { 
     if ([evt.title isEqualToString:title] && [evt.startDate isEqualToDate:startDate]) 
     { 
      found = YES;     
      break; 
     } 
    } 
if(!found) 
{ 
//Add your event here. 
} 
+0

它給出這個錯誤 - 對日曆守護進程的謂詞調用失敗:錯誤域= EKCADErrorDomain代碼= 1013「操作無法完成(EKCADErrorDomain錯誤1013.)」 –

+0

錯誤表示您的應用程序沒有權限訪問日曆。您可以在iPhone設置中爲您的應用啓用它。 – Vignesh