Objective c 事件未添加到ios 5中的日历

Objective c 事件未添加到ios 5中的日历,objective-c,ios5,Objective C,Ios5,我为用户提供了一个按钮,用于将全天事件添加到他们的日历中,其中包含两个警报,如下所示: myEvent.title = [NSString stringWithFormat:@"The Event"]; myEvent.startDate = theeventdate; myEvent.endDate = theeventdate; myEvent.allDay = YES; NSMutableArray *myAlarmsArray = [[NSMutableArray alloc

我为用户提供了一个按钮,用于将全天事件添加到他们的日历中,其中包含两个警报,如下所示:

myEvent.title     = [NSString stringWithFormat:@"The Event"];
myEvent.startDate = theeventdate;
myEvent.endDate   = theeventdate;
myEvent.allDay = YES;
NSMutableArray *myAlarmsArray = [[NSMutableArray alloc] initWithObjects:
                                 [EKAlarm alarmWithRelativeOffset: -86400],
                                 [EKAlarm alarmWithRelativeOffset: -172800],nil];
myEvent.alarms = myAlarmsArray;
[myEvent setCalendar:[eventEntry defaultCalendarForNewEvents]];
[myAlarmsArray release];
NSError *err;

[eventEntry saveEvent:myEvent span:EKSpanThisEvent error:&err]; 

这在iOS 4.x中运行良好,在iPad上的iOS 5中对我来说运行良好。但是,我收到报告说,在iOS 5下,用户日历中没有添加任何内容。我今天在一个有基本默认日历的4S上观察到了这个问题:没有崩溃,没有挂起,只是日历上没有添加任何事件。不幸的是,我部署应用程序时没有记录saveEvent返回的任何潜在错误。我在这里做错了什么,或者有其他人看到过这种行为吗

我能告诉您的是,以下对eventEntry saveEvent的更新修复了该问题:

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"5.0")) {
    [eventEntry saveEvent:myEvent span:EKSpanThisEvent commit:YES error:&err];
} else {
    [eventEntry saveEvent:myEvent span:EKSpanThisEvent error:&err];

注意显式提交:是。

另一种检查方法是检查
[eventEntry respondsToSelector:@selector(saveEvent:span:commit:error:)
,但效果相同。