5

我有一个应用程序以编程方式将提醒添加到您的 iOS 设备的日历中。

在 iOS 5 之前,我可以添加一个带有两个警报的日历项:

EKEventStore* eventStore = [[EKEventStore alloc] init];
EKEvent* event = [EKEvent eventWithEventStore:eventStore];
// set startDate, endDate, title, location, etc.

[event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -5.0f]]; // 5 min
[event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -15.0f]]; // 15 min

[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError* error = nil;
BOOL success = [eventStore saveEvent:event span:EKSpanThisEvent error:&error]; 

在 iOS 5 上,这会冻结应用程序。它不会返回错误 - 它永远不会返回。

如果我只调用一次 addAlarm,它会按预期工作。

在 iOS 4.2 上,调用 addAlarm 两次就可以了。

难道我做错了什么?

4

4 回答 4

1

它是苹果的一个错误。如果您设置 2 个警报,则会导致应用程序冻结。如果你只设置 1 它工作得很好。这已在 iOS 5.1 中修复。

于 2012-01-06T06:36:39.940 回答
0

您是否尝试过使用变量调用 addAlarm?

EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:60.0f * -5.0f]]; // 5 min
[event addAlarm:alarm];

EKAlarm *alarm2 = [EKAlarm alarmWithRelativeOffset:60.0f * -15.0f]]; // 15 min
[event addAlarm:alarm2];
于 2011-10-21T12:10:35.373 回答
0

如果您查看 iOS 4.3文档的 iOS 5 更改中的 EventKit 部分,它提到某些项目已被 EKEvent 弃用。层次结构发生了变化,并添加了一个新的抽象超类:EKCalendarItem

于 2011-10-24T18:37:25.873 回答
0

我有同样的错误。

问题似乎startDate不应该与endDate相同......真是愚蠢的iOS变化!

于 2011-10-26T15:09:47.130 回答