6

以前に保存したイベントのwithメソッドEKEventから取得したいが、常にnullになる場合。EKEventStoreeventWithIdentifier

これは、イベントを追加するためのコードです。

EKEventStore *eventStore = [[EKEventStore alloc] init];
EKEvent *newEvent = [EKEvent eventWithEventStore:eventStore];
newEvent.title = @"Test";
newEvent.availability = EKEventAvailabilityFree;
newEvent.startDate = startDate;
newEvent.endDate = endDate;
[newEvent addAlarm:[EKAlarm alarmWithRelativeOffset:-15*60]];

newEvent.calendar = [eventStore defaultCalendarForNewEvents];

NSError *err;
BOOL success = [eventStore saveEvent:newEvent span:EKSpanThisEvent commit:YES error:&err];

if (success) {
    if ([newEvent respondsToSelector:@selector(calendarItemIdentifier)]) {
        [[NSUserDefaults standardUserDefaults] setObject:newEvent.calendarItemIdentifier forKey:self.showId];
        NSLog(@"Event ID: %@",newEvent.calendarItemIdentifier);
    }
    else {
        [[NSUserDefaults standardUserDefaults] setObject:newEvent.UUID forKey:self.showId];
        NSLog(@"Event ID: %@",newEvent.UUID);
    }
}

そして、イベントを削除するためのコード:

EKEventStore *eventStore = [[EKEventStore alloc] init];

NSError *err;
BOOL success = YES;

NSLog(@"Event ID: %@",[[NSUserDefaults standardUserDefaults] objectForKey:self.showId]);

EKEvent *existingEvent = [eventStore eventWithIdentifier:[[NSUserDefaults standardUserDefaults] objectForKey:self.showId]];
NSLog(@"Existing event: %@",existingEvent);
if (existingEvent != nil) {
    success = [eventStore removeEvent:existingEvent span:EKSpanThisEvent error:&err];
}
if (success) {
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:self.showId];
}

同じイベントIDで以前に追加したイベントをカレンダーから削除できないのはなぜですか?

このコードは、iOS 5(iPad 1)およびiOS 6(新しいiPad)でテストされました...

4

2 に答える 2

7

newEvent.eventIdentifierの代わりに使用していますがnewEvent.calendarItemIdentifier、これまでのところ、を使用して[store eventWithIdentifier:_project.event_identifier]、既存のイベントを取得、削除、編集できます。試してみてください。

于 2013-04-17T20:28:11.380 に答える
1

ドキュメントには、「イベントのカレンダーが変更されると、その識別子も変更される可能性が高い」と警告されています。eventIdentiferを保存してから削除しようとしたときまでに、イベントについて何か変更がありましたか?

于 2012-10-10T14:03:07.433 に答える