如何在Swift 3

时间:2017-03-21 01:51:51

标签: ios swift ekcalendar

我尝试从我的应用创建日历。它无法在iPhone 6上运行,应用程序崩溃了。

这是我的代码:

do {
    let calender = EKCalendar(for: .event, eventStore: eventStore)
    calender.title = "MyApp"
    calender.source = eventStore.defaultCalendarForNewEvents.source
    try eventStore.saveCalendar(calender, commit: true)
    userDefaults.set(calender.calendarIdentifier, forKey: calendarIdentifierKey)
    userDefaults.synchronize()
} catch  {
    print("Error occurred while creating calendar ")
}

更新

  1. 在手机中,默认日历设为xxx.gmail.com
  2. 并抛出以下错误

    Error occurred while creating calendar 
    

1 个答案:

答案 0 :(得分:1)

我终于找到了答案。

do {
        let calender = EKCalendar(for: .event, eventStore: eventStore)
        calender.title = "MyApp"
        let sourcesInEventStore = eventStore.sources
        let filteredEventStores = sourcesInEventStore.filter{
            (source: EKSource) -> Bool in
            source.sourceType.rawValue == EKSourceType.local.rawValue || source.title.equalsIgnoreCase("iCloud")
        }
        if filteredEventStores.count > 0 {
            calender.source = filteredEventStores.first!
        } else {
            calender.source = sourcesInEventStore.filter{
                (source: EKSource) -> Bool in
                source.sourceType.rawValue == EKSourceType.subscribed.rawValue
                }.first!
        }
        try eventStore.saveCalendar(calender, commit: true)
        userDefaults.set(calender.calendarIdentifier, forKey: calendarIdentifierKey)
        userDefaults.synchronize()
    } catch  {
        print("Error occurred while creating calendar ")
    }