EventKit - приложение зависает при добавлении EKEvent с 2 будильниками (iOS 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 ответа

Решение

Это ошибка с Apple. Если вы установите 2 будильника, это приведет к зависанию приложения. Если вы только установите 1, это работает просто отлично. Это исправлено в iOS 5.1 .

У меня была такая же ошибка.

Кажется, проблема в том, что startDate не должен совпадать с endDate... действительно глупое изменение iOS!

Вы пытались вызвать 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];

Если вы посмотрите на раздел EventKit в iOS 5, отличающийся от документа iOS 4.3, он упоминает, что некоторые элементы устарели для EKEvent. Иерархия изменилась, и был добавлен новый абстрактный суперкласс: EKCalendarItem.

Другие вопросы по тегам