首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eventkit并不总是删除事件

Eventkit并不总是删除事件
EN

Stack Overflow用户
提问于 2014-05-30 21:08:42
回答 1查看 297关注 0票数 0

我正在开发一个应用程序,它可以在线获取学生的课程,并将其保存到iPhone的日历上。

每次课程更新,我想删除所有事件从日历上的一周,然后把更新的教训为整个星期。

我在添加事件时没有问题,但有时事件不会被删除?

代码语言:javascript
复制
dispatch_queue_t queue = dispatch_queue_create("com.xxxxr.xxxxxx.calendar", NULL);
    dispatch_async(queue, ^{
        EKEventStore *eventStore = [[EKEventStore alloc] init];
        [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {

            if (granted){

                NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
                EKCalendar *calendarIdentifier;

                if ([defaults objectForKey:@"Calendar"] == nil || ![eventStore calendarWithIdentifier:[defaults objectForKey:@"Calendar"]]){
                    // Create Calendar if Needed

                    EKSource *theSource = nil;
                    for (EKSource *source in eventStore.sources) {
                        if (source.sourceType == EKSourceTypeCalDAV && [source.title isEqualToString:@"iCloud"]) {
                            theSource = source;
                            NSLog(@"iCloud Store Source");
                            break;
                        } else {
                            for (EKSource *source in eventStore.sources) {
                                if (source.sourceType == EKSourceTypeLocal) {
                                    theSource = source;
                                    NSLog(@"iPhone Local Store Source");
                                    break;
                                }
                            }
                        }
                    }

                    EKCalendar *cal;
                    cal = [EKCalendar calendarForEntityType:EKEntityTypeEvent eventStore:eventStore];
                    cal.title = @"xxxxxxx";
                    cal.source = theSource;
                    [eventStore saveCalendar:cal commit:YES error:nil];
                    NSString *calendar_id = cal.calendarIdentifier;
                    [defaults setObject:calendar_id forKey:@"Calendar"];
                    calendarIdentifier = cal;

                } else {
                    calendarIdentifier  = [eventStore calendarWithIdentifier:[defaults objectForKey:@"Calendar"]];
                    NSLog(@"Calendar Existed");
                }


                /* NOW TO WHERE THE PROBLEM LIES! */
                /* FIRST DELETE ALL EVENTS OF THIS WEEK */

                NSArray *arrayOfIdentitiesToDelete = [defaults objectForKey:@"eventIdentities"];
                for(NSString *identifierOfEventToDelete in arrayOfIdentitiesToDelete){
                    EKEvent *eventToRemove = [eventStore eventWithIdentifier:identifierOfEventToDelete];
                    NSError *error;
                    [eventStore removeEvent:eventToRemove span:EKSpanThisEvent error:&error];
                }

                /* Then create new events from my 'arrayOfLessons' array */

                NSMutableArray *arrayOfEventIdentities = [[NSMutableArray alloc] init];

                for(int dayAddingToCalendar = 0; dayAddingToCalendar < 5; dayAddingToCalendar++){
                    for(NSArray *arrayOfDayAddingToCalendar in [[arrayOfLessons objectAtIndex:dayAddingToCalendar] objectAtIndex:3]){

                        EKEvent *event  = [EKEvent eventWithEventStore:eventStore];
                        event.calendar  = calendarIdentifier;
                        event.title     = [arrayOfDayAddingToCalendar objectAtIndex:4];
                        event.location  = [arrayOfDayAddingToCalendar objectAtIndex:1];
                        event.notes     = [arrayOfDayAddingToCalendar objectAtIndex:0];
                        event.startDate = [arrayOfDayAddingToCalendar objectAtIndex:12];
                        event.endDate   = [arrayOfDayAddingToCalendar objectAtIndex:13];
                        event.allDay    = NO;

                        [eventStore saveEvent:event span:EKSpanThisEvent error:nil];
                        [arrayOfEventIdentities addObject:event.eventIdentifier];
                    }
                }

                [defaults setObject:arrayOfEventIdentities forKey:@"eventIdentities"];

            } else {
                NSLog(@"Not Granted");
            }
        }];
    });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-31 01:02:01

你是说:

代码语言:javascript
复制
NSError *error;
[eventStore removeEvent:eventToRemove span:EKSpanThisEvent error:&error];

所以你放弃了错误检查。不要看error!这就是它的目的。如下所示:

代码语言:javascript
复制
NSError *error;
BOOL ok = [eventStore removeEvent:eventToRemove span:EKSpanThisEvent error:&error];
if (!ok)
    NSLog(@"%@", error);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23963457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档