iOS7 – 将500条logging复制到事件存储时使用Commit = YES进行设备hibernate

下面的代码可以正常工作500条logging,我们正在批量操作,添加500条logging后提交事件库。

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]; 

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

 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 +logging到事件存储。 任何帮助将不胜感激。 谢谢。