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.