iOS7 - 使用Commit = YES将500条记录复制到eventstore时重新启动设备

时间:2013-10-30 12:54:23

标签: ios ipad ios7 eventkit

以下代码可以正常处理500条记录,我们正在批处理操作并在添加500条记录后提交事件存储。

EKEventStore *eventStore = [[EKEventStore alloc] init];
for(int i=0 ; i< 500 ; i++){

    EKCalendar *calendarDef = [eventStore defaultCalendarForNewEvents];
    EKEvent *event  = [EKEvent eventWithEventStore:eventStore];
    [event setCalendar:calendarDef];

    //set values to this event. like title, notes, startDate, endDate, location
    event.title = [NSString stringWithFormat:@"testno-%i", i];
    event.startDate = [NSDate date];
    event.endDate = [[NSDate date] dateByAddingTimeInterval:180];


    NSError *err1 = nil;
    BOOL isStoredd = [eventStore saveEvent:event span:EKSpanThisEvent commit:NO error:&err1];

    NSLog(@"item %i", i);
    if(isStoredd){

        NSLog(@"stored");
    }else{
        NSLog(@"event saved error = %@",err1);

    }

}
[eventStore commit:NULL];

假设我们需要每个复制事件记录的eventidentifier以供将来修改,那么我们应该提交每个记录来获取标识符。但是当我这样做时,我们得到了内存警告,设备正在重启。下面是示例代码:

EKEventStore *eventStore = [[EKEventStore alloc] init];
for(int i=0 ; i< 500 ; i++){

    NSString *eventIde = nil;
    EKCalendar *calendarDef = [eventStore defaultCalendarForNewEvents];
    EKEvent *event  = [EKEvent eventWithEventStore:eventStore];
    [event setCalendar:calendarDef];

    //set values to this event. like title, notes, startDate, endDate, location
    event.title = [NSString stringWithFormat:@"testno-%i", i];
    event.startDate = [NSDate date];
    event.endDate = [[NSDate date] dateByAddingTimeInterval:180];


    NSError *err1 = nil;
    BOOL isStoredd = [eventStore saveEvent:event span:EKSpanThisEvent commit:YES error:&err1];

    NSLog(@"item %i", i);
    if(isStoredd){

        eventIde = event.eventIdentifier;
        //storing the eventIde to application's database to modify/delete the event later.
        NSLog(@"stored identifier %@", eventIde);
    }else{
        NSLog(@"event saved error = %@",err1);

    }

}

我们需要eventidentifier用于将来的修改(更新/删除),因此寻找通过gettng其eventidentifier将500多条记录插入eventstore的方法。任何帮助将不胜感激。感谢。

0 个答案:

没有答案