eventStore=[[EKEventStore alloc] init];
EKEvent *addEvent=[EKEvent eventWithEventStore:eventStore];
addEvent.title=@"hello";
addEvent.startDate=messageDate;
addEvent.endDate=[addEvent.startDate dateByAddingTimeInterval:600];
[addEvent setCalendar:[eventStore defaultCalendarForNewEvents]];
addEvent.alarms=[NSArray arrayWithObject:[EKAlarm alarmWithAbsoluteDate:addEvent.startDate]];
[eventStore saveEvent:addEvent span:EKSpanThisEvent error:nil];
上面的代码在ios 4.2中工作正常但在ios 5中没有。我在applicationDidfinishingLaunching方法中有代码。由于错误,会出现黑屏并退出应用程序。 ios 5中只有recurrenceRules发生了变化,我没有使用它。所有其他属性在超类EKCalendarItem中可用。我不能测试它,因为我有xcode 3.2和雪豹。我希望调试发生错误的行导致应用程序退出。我怀疑它与setCalendar或使用alarms属性有关。
答案 0 :(得分:3)
代码是正确的,适用于iOS 5.我的错误原因是第一行
eventStore=[[EKEventStore alloc] init];
由于初始化eventstore需要一些时间,因此将其置于应用程序启动方法中会导致超时。我在崩溃报告中发现了这一点:
"Elapsed application CPU time (seconds):30 seconds"
该应用程序应该在10秒内启动。如果没有超时Exception Codes: 0x8badf00d
答案 1 :(得分:1)
您必须使用第5版SDK。您可以在saveEvent函数中找到diff:
[eventStore saveEvent:addEvent span:EKSpanThisEvent commit:YES error:nil];
它可以帮助你。
答案 2 :(得分:0)
iOS5中的API发生了变化(我相信),要求您使用addAlarm
实例方法添加EKAlarm对象。
在iOS5中为您的活动添加闹钟:
[addEvent addAlarm:[EKAlarm alarmWithAbsoluteDate:addEvent.startDate]]
查看EKCalendarItem Class Reference了解详情。
虽然@property(nonatomic, copy) NSArray *alarms
未指定为只读,但它似乎表现得那样。
有关其他iOS5 EKAlarm问题的详细信息,请参阅https://stackoverflow.com/a/7880242/816455。
答案 3 :(得分:0)
NaveenaRK我没有任何时间错误,但我通过执行以下操作来解决此问题。
您需要将eventStore保留在内存中以保持对象的生命周期。
eventStore = [[EKEventStore alloc] init]
我在创建对象时初始化了事件存储,并在dealloc中释放它。设置警报和“CADObjectGetInlineStringProperty”错误的问题都是固定的。