【问题标题】:Create EKEvent with no alarm创建没有警报的 EKEvent
【发布时间】:2017-06-10 06:24:03
【问题描述】:

我正在创建一个附加到自定义日历的 EKEvent。每当我创建 EKEvent 时,都会为事件的时间设置一个警报,但是,我希望这个事件在创建时没有警报。

我已尝试将事件的警报属性设置为...

event.alarms = nil

还有……

event.alarms = []

我也尝试将警报设置为遥远的未来数据,但这只是为事件添加了另一个警报...

event.alarms = [Date.distantFuture]

我在保存事件之前已经完成了所有这些操作,但它没有给我任何结果,无论我做什么都会触发警报。 :(

这是我用来创建日历的代码:

let calendar = EKCalendar(for: .event, eventStore: store)
var source = store.sources.filter{ $0.sourceType == .calDAV && $0.title == "iCloud" }.first
if source == nil {
    source = store.sources.filter{ $0.sourceType == .local }.first
}
calendar!.title = "Some Title"
calendar!.cgColor = ColorKey.orange.color().cgColor
calendar!.source = source!

do {
    try store.saveCalendar(calendar!, commit: true)
} catch {
    //error handling here...
}

这是我用来创建事件的代码:

let event = EKEvent(eventStore: store)
event.title = "Some title"
event.notes = "Some notes"
event.startDate = dateToFire
event.endDate = dateToFire.addingTimeInterval(TimeInSeconds.hour.rawValue)
event.isAllDay = false
event.calendar = calendar
do {
    try store.save(event, span: EKSpan.futureEvents)
} catch {
    //error handling here...
}

这是操作系统上的错误还是我遗漏了什么? 谢谢!

【问题讨论】:

  • 丹尼,我正要发布一个相同的问题。除了删除警报(尽管没有要删除的警报)之外,我还尝试在创建事件时保存eventIdentifier,然后(很久以后)返回并获取相同的事件。仍然没有要删除的警报。我可以使用日历应用程序手动删除警报(通过将警报设置为“无”)。但是,在创建和保存事件时如何以编程方式进行呢?如果您还没有解决这个问题,我们可以尝试通过设置赏金来获得关注。
  • 我已经找到并发布了答案。

标签: ios iphone swift eventkit


【解决方案1】:

您是否尝试过 EkCalendarItem 类中的 removealaram 方法?

【讨论】:

  • 我尝试在将活动保存到商店后取消闹钟,但日历通知仍然通过。
【解决方案2】:

Apple 的日历应用程序中有默认提醒设置。启动日历,然后转到首选项、警报。那里有三种设置(事件、全天事件、生日)。将它们设置为“无”。 (我使用的是 macOS 10.14,日历 11.0。)

【讨论】:

    猜你喜欢
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多