Swift-把事件写入到日历中

把APP事件写入到苹果软件日历

事件添加

  • 导入头文件 import EventKit
  • 创建 EKEventStore类型的实例eventStore 以及事件的id eventIdentifier
  • 获取请求权限

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    var eventStore: EKEventStore!
    eventStore.requestAccess(to: .event) { (success, error) in
    if error != nil {
    // 错误中心
    print(error ?? "")
    }else if !success {
    // 用户被拒绝
    print(error ?? "")
    }else{
    // 创建事件
    }
    }
  • 在else里面创建事件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    let event: EKEvent = EKEvent(eventStore: self.eventStore)
    event.title = "您今天该还款了,借贷宝 1000元"
    event.location = "我在上海浦东软件园"
    // 开始时间 应该传入时间戳
    event.startDate = self.dateFrom(time: "2017-05-27 11:37:00", format: "yyyy-MM-dd HH:mm:ss")
    // 结束时间 时间到了 该事件从日历中消失
    event.endDate = self.dateFrom(time: "2017-05-27 11:38:00", format: "yyyy-MM-dd HH:mm:ss")
    // 提醒时间 按照秒来计算
    event.addAlarm(EKAlarm(relativeOffset: -10))
    event.addAlarm(EKAlarm(relativeOffset: -30))
    event.addAlarm(EKAlarm(relativeOffset: -50))
    event.calendar = self.eventStore.defaultCalendarForNewEvents
    do {
    // 事件添加成功
    try self.eventStore.save(event, span: .thisEvent)
    print(event.eventIdentifier)
    self.eventIdentifier = event.eventIdentifier
    } catch {
    print("有坏银!")
    }

事件删除

  • 根据之前获取的id “eventIdentifier”

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    let eventToRemove = eventStore.event(withIdentifier: eventIdentifier!)
    if (eventToRemove != nil) {
    do {
    try eventStore.remove(eventToRemove!, span: .thisEvent)
    } catch {
    print("Bad things happened")
    }
    }
坚持原创技术分享,您的支持将鼓励我继续创作!