简体   繁体   English

在EKEventStore中创建EKCalendar-Swift

[英]Creating an EKCalendar in EKEventStore - Swift

I'm trying to create a single calendar into EKEventStore when the my app first runs. 我尝试在我的应用程序首次运行时在EKEventStore中创建一个日历。 I found this tutorial but I don't really know enough about Objective-C to translate it to Swift, and also from the research that I've done I'm wondering if this method is still possible in ios8. 我找到了本教程,但是我对Objective-C的了解还不足以将其转换为Swift,而且从我所做的研究中,我想知道在ios8中这种方法是否仍然可行。

Try (note this is for a reminder type, but you can just change the type if you need to): 尝试(请注意,这是针对提醒类型的,但是您可以根据需要更改类型):

let eventStore = EKEventStore()
var yourReminderCalendar: EKCalendar?

func retrieveYourCalendar() {
    let calendars = eventStore.calendarsForEntityType(EKEntityTypeReminder)

    if(yourReminderCalendar == nil) {
        for calendar in calendars {
            if calendar.title == "Your Title" {
                yourReminderCalendar = (calendar as EKCalendar)
                break
            }
        }

        if(yourReminderCalendar == nil) {
            yourReminderCalendar = EKCalendar(forEntityType: EKEntityTypeReminder, eventStore: eventStore)
            yourReminderCalendar!.title = "Your Title"
            yourReminderCalendar!.source = eventStore.defaultCalendarForNewReminders().source
            var error: NSError?

            if(eventStore.saveCalendar(yourReminderCalendar, commit: true, error: &error)) {
                println("reminder cal saved")
            }
            else {
                //HANDLE REMINDER ERROR
            }
        }
    }
}

You'll want to check for authorization: 您将要检查授权:

    func verifyUserEventAuthorization() {
    switch EKEventStore.authorizationStatusForEntityType(EKEntityTypeReminder) {
    case .Authorized:
        ...
    case .Denied:
        ...
    case .NotDetermined:
        eventStore.requestAccessToEntityType(EKEntityTypeReminder, completion:
            { [weak self](granted: Bool, error: NSError!) -> Void in
                if granted {
                    ...
                }
                else {
                   ...
                }
        })
    case .Restricted:
        ...
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Swift中的EKEventStore enumerateEventsMatchingPredicate - EKEventStore enumerateEventsMatchingPredicate in Swift Swift编译错误:使用未声明的类型'EKEventStore' - Swift Compiler Error : Use of undeclared type 'EKEventStore' 从EKEventStore获取事件并在Swift iOS8中的tableView中显示 - Fetch events from EKEventStore and show in tableView in Swift iOS8 使用 Swift 3 在 OSX Sierra 上使用 EKEventStore 访问日历的问题 - Problems accessing Calendar using EKEventStore on OSX Sierra with Swift 3 (iOS Swift)在应用程序和Today Extension之间共享EKEventStore和访问 - (iOS Swift) Share EKEventStore and access between app and Today Extension Swift:从EKEventStore提取到tableView数据后,对EKEvents进行日期排序 - Swift: Date sorting EKEvents after fetching from EKEventStore into tableView data Swift iOS EKEventStore:从EKEvent获取参与者有时会导致NSInvalidArgumentException崩溃 - Swift iOS EKEventStore : Fetching atendees from EKEvent causes sometimes to crash with NSInvalidArgumentException 无法在 macOS 的 Swift 应用程序中请求日历事件访问(通过 EKEventStore) - Can't request calendar event access (via EKEventStore) in Swift app for macOS EKCalendar没有成员默认值CalendarForNewReminders - EKCalendar has no member defaultCalendarForNewReminders 不会创建新的EventKit EKCalendar吗? - New EventKit EKCalendar will not create?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM