从我们的应用程序管理iPhone日历事件

从我们的应用程序管理iPhone日历事件,iphone,xcode,calendar,eventkit,Iphone,Xcode,Calendar,Eventkit,下面是我的代码 NSLog(@"%@", thisEvent1.title); EKEvent *thisEvent = [EKEvent eventWithEventStore:eventStore]; eventStore = [[EKEventStore alloc] init]; thisEvent = [EKEvent eventWithEventStore:eventStore]; NSDateFormatter * dateFormatter = [[NSDate

下面是我的代码

NSLog(@"%@", thisEvent1.title); 

EKEvent *thisEvent  = [EKEvent eventWithEventStore:eventStore];

eventStore = [[EKEventStore alloc] init];

thisEvent = [EKEvent eventWithEventStore:eventStore];


NSDateFormatter *   dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd:HH:mm"];


NSDate * date = [[NSDate alloc] init];
date = [dateFormatter dateFromString:[itsStartDate objectAtIndex:indexPath.row]];
[date retain];

thisEvent.startDate = [dateFormatter dateFromString:[itsStartDate objectAtIndex:indexPath.row]];
thisEvent.endDate = [dateFormatter dateFromString:[itsEndDate objectAtIndex:indexPath.row]];
thisEvent.notes = [itsNotes objectAtIndex:indexPath.row];
thisEvent.title = [itsTitle objectAtIndex:indexPath.row];
thisEvent.location = [itsLocation objectAtIndex:indexPath.row];
// thisEvent.allDay = TRUE;
NSMutableArray *myAlarmsArray = [[NSMutableArray alloc] init];

EKAlarm *alarm1 = [EKAlarm alarmWithRelativeOffset:-[[itsAlertOne objectAtIndex:indexPath.row] intValue]]; // 1 Hour
// EKAlarm *alarm2 = [EKAlarm alarmWithRelativeOffset:-86400]; // 1 Day

[myAlarmsArray addObject:alarm1];
//[myAlarmsArray addObject:alarm2];

thisEvent.alarms = myAlarmsArray;
[myAlarmsArray release];

//setting the Reuccurence rule

NSString * test1 = [itsRecurrenceFrequency objectAtIndex:indexPath.row];

    BOOL isRecurrenceFrequencyExists = TRUE;

EKRecurrenceFrequency  recurrenceFrequency;

if ([test1 isEqualToString: @"EKRecurrenceFrequencyDaily"]) {
    recurrenceFrequency = EKRecurrenceFrequencyDaily;
}else if([test1 isEqualToString: @"EKRecurrenceFrequencyWeekly"]){
    recurrenceFrequency = EKRecurrenceFrequencyWeekly;
}else if([test1 isEqualToString: @"EKRecurrenceFrequencyMonthly"]){
    recurrenceFrequency = EKRecurrenceFrequencyMonthly;
}else if([test1 isEqualToString: @"EKRecurrenceFrequencyYearly"]){
    recurrenceFrequency = EKRecurrenceFrequencyYearly;
}else{
    isRecurrenceFrequencyExists = FALSE;
}

    if(isRecurrenceFrequencyExists){
        EKRecurrenceRule * recurrenceRule = [[EKRecurrenceRule alloc] 

                                     initRecurrenceWithFrequency:recurrenceFrequency
                                     interval:[[itsRecurrenceInterval objectAtIndex:indexPath.row]intValue]
                                     end:nil];
        if (thisEvent.endDate != nil) {
            EKRecurrenceEnd * end = [EKRecurrenceEnd recurrenceEndWithEndDate:thisEvent.endDate];
            recurrenceRule.recurrenceEnd = end;
        }else {
            thisEvent.endDate = thisEvent.startDate;
        }

        thisEvent.recurrenceRule = recurrenceRule;
        [recurrenceRule release];

    }
[thisEvent setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;


[eventStore saveEvent:thisEvent span:EKSpanFutureEvents error:&err]; 
NSLog(@"%@", thisEvent.eventIdentifier);
[self.eventsList addObject:thisEvent];
在这段代码中,我有日历事件的事件id

  • 现在我想用这些更改更新事件,但是它不会更新以前创建的事件

  • 其次,我需要知道是否有可能捕获他们在iPhone日历中对日历事件所做的更改,包括删除事件

  • 我们可以使用eventid删除日历事件吗

  • 如果有人知道答案,请帮助我。。先谢谢你

    问候,,
    Dilip Rajkumar事件可以通过以下方式创建:

    [eventStore saveEvent:event span:EKSpanThisEvent error:&err]; 
       NSString* str = [[NSString alloc] initWithFormat:@"%@", event.eventIdentifier];
    [arrayofCalIDs addObject:str];
    
    您可以使用以下方法删除事件:

    EKEventStore* store = [[[EKEventStore alloc] init] autorelease];
       EKEvent* event2 = [store eventWithIdentifier:[arrayofCalIDs objectAtIndex:i]];
    if (event2 != nil) {  
      NSError* error = nil;
      [store removeEvent:event2 span:EKSpanThisEvent error:&error];
    } 
    [myPath release];
    
    For Updating Event you cannot directly access any method as it is not available in iOS. So, you can do one thing for this. 
    (1) First remove the event with eventID.
    (2) Create new Event using the same information of the last deleted event.
    

    这真是个好主意,非常感谢你的帮助。我还有一个疑问,1。我是否可以获取应用程序和2创建的事件。如果用户使用iPhone日历编辑我们的应用程序创建的事件,我们是否可以在打开应用程序时获取修改后的事件。提前感谢您好,我们可以在这里做一件事来管理事件创建。您可以为事件创建一个数据库或plist,用于处理应用程序创建的所有事件。至于其他几点,我会检查一下,很快让你知道。是的,它起作用了,但是我正在做另一项任务,任务可能会在下周继续,只有这样我才会面临更多的问题谢谢你的回复。我会让你知道一旦我完成。再次感谢你,谢谢。。我又开始研究这个问题了,现在我可以做任何事情了。我现在唯一的问题是EventEditViewActionDeleted中的方法“EKEventEditViewActionDeleted”在我删除事件时调用了三次。请帮帮我。。提前谢谢