【问题标题】:Adding event to native iOS calendar, not working when alert is included将事件添加到本机 iOS 日历,包含警报时不起作用
【发布时间】:2014-01-30 21:46:49
【问题描述】:

我有需要将事件写入本机日历的应用程序。如果添加的 EKEvent 不包含 EKAlarm,则编写工作正常。如果我包含这行代码:

EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:-30];
event.alarms = [NSArray arrayWithObject:alarm];

未添加日历项目。似乎根本没有执行这行代码:

[store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];

想法可能是什么问题?

【问题讨论】:

  • 你能记录你的err变量吗?
  • 实际上就是这样,行 [store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];实际上从未执行过,所以我无法记录错误。

标签: ios ios7 eventkit


【解决方案1】:

我运行了您的代码(并添加了使其完整所需的内容)并且没有任何问题。许多难以解释的情况的解决方案是清理(构建文件夹)并从设备重置模拟器/删除应用程序。如果您提供更多代码,将更容易找到解决方案。顺便说一句,这是我使用的代码:

- (void)addToCalendar {
    EKEventStore *eventStore = [[EKEventStore alloc] init];

    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
        EKEvent *event = [EKEvent eventWithEventStore:eventStore];
        EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:-30];
        event.alarms = [NSArray arrayWithObject:alarm];
        event.title = @"Title";

        NSDateFormatter *df = [[NSDateFormatter alloc] init];
        [df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        event.startDate = [df dateFromString:@"2014-02-05 10:00:00"];
        event.endDate = [event.startDate dateByAddingTimeInterval:90*60];
        event.notes = @"Add some notes";

        [event setCalendar:[eventStore defaultCalendarForNewEvents]];

        NSError *err;
        [eventStore saveEvent:event span:EKSpanThisEvent error:&err];
    }];
}

【讨论】:

  • 您是否尝试过使用具有不同开始/结束日期的多个事件的代码?因为,当只有一个事件,但一次有多个事件时,我没有问题。
  • 我在三个不同的时间/日期添加了四个事件(一个副本也可以检查),都成功了。 “一次发生多个事件”是什么意思?我通过执行上面的代码(修改日期)四次来添加它们。同样,发布 EKEvent 的完整代码可能会在其他地方发现问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多