Iphone 如何从我的应用程序中添加的iCal中删除事件。?

Iphone 如何从我的应用程序中添加的iCal中删除事件。?,iphone,ios,objective-c,calendar,icalendar,Iphone,Ios,Objective C,Calendar,Icalendar,我正在开发一个应用程序,当用户将任何事件添加为其收藏夹时,我会将该事件添加到iCal中,但如果用户从其收藏夹中删除该特定事件,我如何从iCal中删除该事件 这是我的密码: NSDate *date = [NSDate dateWithTimeIntervalSince1970:[[self.parentDetailArray valueForKey:@"start_time_num"] intValue]]; NSDateFormatter *dateformat

我正在开发一个应用程序,当用户将任何事件添加为其收藏夹时,我会将该事件添加到iCal中,但如果用户从其收藏夹中删除该特定事件,我如何从iCal中删除该事件

这是我的密码:

    NSDate *date = [NSDate dateWithTimeIntervalSince1970:[[self.parentDetailArray valueForKey:@"start_time_num"] intValue]];
            NSDateFormatter *dateformatter=[[NSDateFormatter alloc]init];
            [dateformatter setLocale:[NSLocale currentLocale]];
            [dateformatter setDateFormat:@"dd-MM-yyyy"];
            NSString *dateString=[dateformatter stringFromDate:date];

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

             if([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) 
{
 [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
             if (granted){
             //---- codes here when user allow your app to access theirs' calendar.

             EKEvent *event  = [EKEvent eventWithEventStore:eventStore];
             event.title     = title;
             event.startDate = date;
             event.endDate   = [[NSDate alloc] initWithTimeInterval:1000 sinceDate:event.startDate];

             [event setCalendar:[eventStore defaultCalendarForNewEvents]];
             NSError *err;
             [eventStore saveEvent:event span:EKSpanThisEvent error:&err];

// Here I'm trying to get the identifier of that event but m getting only (null)
             self.str = [[NSString alloc] initWithFormat:@"%@", event.eventIdentifier];
             [self.arrayofEventId addObject:self.str];

             //[self performCalendarActivity:eventStore];
             }else
             {
             //----- codes here when user NOT allow your app to access the calendar.
             }
             }];
             }
             else {
             //---- codes here for IOS < 6.0.
             EKEvent *event  = [EKEvent eventWithEventStore:eventStore];
             event.title     = @"Testing for calendar";

             event.startDate = [[NSDate alloc] init];
             NSLog(@"%@",event.startDate);
             [event setCalendar:[eventStore defaultCalendarForNewEvents]];
             NSError *err;
             [eventStore saveEvent:event span:EKSpanThisEvent error:&err];
             //[self performCalendarActivity:eventStore];
             }
NSDate*date=[NSDate datewithtimeintervalencesince1970:[self.parentDetailArray valueForKey:@“start\u time\u num”]intValue];
NSDateFormatter*dateformatter=[[NSDateFormatter alloc]init];
[dateformatter setLocale:[NSLocale currentLocale]];
[日期格式化程序setDateFormat:@“dd-MM-yyyy”];
NSString*dateString=[dateformatter stringFromDate:date];
EKEventStore*eventStore=[[EKEventStore alloc]init];
if([eventStore respondsToSelector:@selector(requestAccessToEntityType:完成:)]))
{
[eventStore requestAccessToEntityType:eEntityTypeEvent completion:^(已授予布尔,N错误*错误){
如果(授予){
//----当用户允许你的应用程序访问他们的日历时,在此处输入代码。
EKEvent*event=[EKEvent eventWithEventStore:eventStore];
event.title=标题;
event.startDate=日期;
event.endDate=[[NSDate alloc]initWithTimeInterval:1000 sinceDate:event.startDate];
[事件设置日历:[eventStore defaultCalendarForNewEvents]];
n错误*错误;
[eventStore saveEvent:event span:EKSpanThisEvent错误:&err];
//在这里,我试图获取该事件的标识符,但仅获取(null)
self.str=[[NSString alloc]initWithFormat:@“%@”,event.eventIdentifier];
[self.arrayofevented addObject:self.str];
//[自执行借贷活动:eventStore];
}否则
{
//-----当用户不允许您的应用访问日历时,请在此输入代码。
}
}];
}
否则{
//----IOS<6.0的代码。
EKEvent*event=[EKEvent eventWithEventStore:eventStore];
event.title=@“日历测试”;
event.startDate=[[NSDate alloc]init];
NSLog(@“%@”,事件开始日期);
[事件设置日历:[eventStore defaultCalendarForNewEvents]];
n错误*错误;
[eventStore saveEvent:event span:EKSpanThisEvent错误:&err];
//[自执行借贷活动:eventStore];
}

如何获取事件标识符n从iCal中删除该特定事件。任何帮助都将不胜感激。

您可以将所有应用程序生成的事件ID写入文件,然后在下次应用程序加载时将其加载回。通过这种方式,您可以跟踪应用程序创建的事件。然后,您可能需要尝试以下方法:

- (BOOL)removeEvent:(EKEvent *)event span:(EKSpan)span commit:(BOOL)commit error:(NSError **)error
保存以下内容:

NSString *id = [[NSString alloc] initWithFormat:@"%@", event.eventIdentifier];
EKEvent *event = [eventStore eventWithIdentifier:id];

NSError *error = nil;
[eventStore removeEvent:event span:EKSpanThisEvent error:&error];
删除此项:

NSString *id = [[NSString alloc] initWithFormat:@"%@", event.eventIdentifier];
EKEvent *event = [eventStore eventWithIdentifier:id];

NSError *error = nil;
[eventStore removeEvent:event span:EKSpanThisEvent error:&error];

Apple在EKEventStore上有文档。

我已经将所有事件ID存储在一个可变数组中,并且我正在将该数组存储到文件中,以便跟踪我的应用程序添加的所有事件。但当我使用这个remove方法时,它会在控制台中给我这个消息。“操作无法完成。(马赫错误268435459-(ipc/send)目标端口无效)。