【问题标题】:How to delete event from iCal added from my app.?如何从我的应用添加的 iCal 中删除事件?
【发布时间】:2023-03-17 09:20:01
【问题描述】:

我正在开发一个应用程序,当用户将任何事件添加为他的最爱时,我会将该事件添加到 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];
             }

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

【问题讨论】:

    标签: iphone ios objective-c calendar icalendar


    【解决方案1】:

    您可以将所有应用生成的事件 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];
    

    Apple 在 EKEventStore here 上有文档。

    【讨论】:

    • 我已将所有事件 ID 存储在一个可变数组中,并将该数组存储到文件中,以便我可以跟踪我的应用程序添加的所有事件。但是当我使用这个删除方法时,它会在控制台中给我这个消息。 "操作无法完成。(Mach 错误 268435459 - (ipc/send) 无效的目标端口)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多