我收到一个错误:
删除事件错误:错误域= EKErrorDomain代码= 11“该事件不属于该事件存储。” UserInfo = 0x1fdf96b0 {NSLocalizedDescription =该事件不属于该事件存储。
当我尝试删除刚刚创建的EKEvent时。
下面的代码显示我正在存储eventIdentifier并使用它来检索事件。此外,当我执行此操作和NSLog事件时,我可以正确看到它的所有属性。
从所有示例中,我都可以看出我所做的一切正确。每次我以任何方法访问它时,我还对NSEvent设置了EKEventStore的eventStoreIdentifier及其相同的名称,因此它应该是相同的EKEventStore。
任何帮助将不胜感激。
- (EKEvent *) getCurrentCalendarEvent {
NSString *currentCalendarEventID = [[UserModel sharedManager] currentCalendarEventID];
EKEventStore *eventStore = [[EKEventStore alloc] init];
EKEvent *event = [eventStore eventWithIdentifier:currentCalendarEventID];
return event;
}
- (void) removeCurrentCalendarEvent {
EKEvent *event = [self getCurrentCalendarEvent];
if (event) {
NSError *error;
EKEventStore *eventStore = [[EKEventStore alloc] init];
[eventStore removeEvent:event span:EKSpanFutureEvents error:&error];
}
}
- (void) addCurrentCalendarEvent {
[self removeCurrentCalendarEvent];
EKEventStore *eventStore = [[EKEventStore alloc] init];
EKEvent *event = [EKEvent eventWithEventStore:eventStore];
event.title = [[UserModel sharedManager] reminderLabel];
event.notes = @"Notes";
NSDate *startDate = [NSDate date];
int futureDateSecs = 60 * 5;
NSDate *endDate = [startDate dateByAddingTimeInterval:futureDateSecs];
event.startDate = startDate;
event.endDate = endDate;
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *error;
[eventStore saveEvent:event span:EKSpanThisEvent error:&error];
[[UserModel sharedManager] setCurrentCalendarEventID:event.eventIdentifier];
[[UserModel sharedManager] saveToDefaults];
}
最佳答案
这是因为您是always initializing a new instance of EKEventStore
。当您将EKEvent
添加到EKEventStore
时,那么EKEventStore
的实例与尝试删除时的实例不同。您可以做的是在.h中声明EKEventStore
参考变量,并将其初始化一次。
在.h中-
EKEventStore *eventStore;
在.m中-
里面
viewDidLoad
-eventStore = [[EKEventStore alloc] init];
然后从所有三种方法中删除此行-
EKEventStore *eventStore = [[EKEventStore alloc] init];