我從web服務接收一些事件。我使用Eventkit以編程方式添加這些事件。我有一個Add
按鈕調用代碼來添加收到的事件。但是,重複添加操作會重複事件而不是合併(如果事件已存在)。如何使用事件包處理重複事件
如何避免重複事件?
我從web服務接收一些事件。我使用Eventkit以編程方式添加這些事件。我有一個Add
按鈕調用代碼來添加收到的事件。但是,重複添加操作會重複事件而不是合併(如果事件已存在)。如何使用事件包處理重複事件
如何避免重複事件?
您必須在添加之前檢查現有事件。下面的代碼顯示瞭如何做到這一點。我已經檢查過標題和開始日期以確定事件,您可以根據需要使用更多參數。
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.
}
它給出這個錯誤 - 對日曆守護進程的謂詞調用失敗:錯誤域= EKCADErrorDomain代碼= 1013「操作無法完成(EKCADErrorDomain錯誤1013.)」 –
錯誤表示您的應用程序沒有權限訪問日曆。您可以在iPhone設置中爲您的應用啓用它。 – Vignesh
當你點擊添加事件按鈕時,你需要檢查事件是否已經存在,然後你需要插入它。您可以使用其唯一標識符檢查事件。 – RAJA
[this](http://stackoverflow.com/q/6077613/2389078)和[that](http://stackoverflow.com/q/19496772/2389078)可能會有所幫助。 – DroidDev
顯示您的代碼以添加事件。 – Amar