Xcode7, iOS9 используют неразрешенный идентификатор «EKSpanThisEvent»

у меня проблема с этим кодом

import UIKit
import EventKit

let eventStore = EKEventStore()
    eventStore.requestAccessToEntityType(EKEntityType.Event, completion: { (success, accessError) -> Void in
        if accessError != nil {
            print("Calendar Access Error: \(accessError)")
            return
        }
        let event = EKEvent(eventStore: eventStore)

        event.title = self.detailItem!.title
        event.allDay = true
        event.startDate = self.detailItem!.date
        event.endDate = self.detailItem!.date
        event.calendar = eventStore.defaultCalendarForNewEvents
        var saveToCalendarError: NSError?
        let success: Bool
        do {
            //Swift2: use of unresolved identifier 'EKSpanThisEvent'
            try eventStore.saveEvent(event, span: EKSpanThisEvent)
            success = true
        } catch var error as NSError {
            saveToCalendarError = error
            success = false
        } catch {
            fatalError()
        }

компилятор не компилируется, и ошибка "использование неразрешенного идентификатора" EKSpanThisEvent"

Я надеюсь, что кто-то может помочь!


person Wesley De Groot    schedule 08.08.2015    source источник


Ответы (3)


В Swift 2/Xcode 7 многие перечисления были изменены для согласованности.

try eventStore.saveEvent(event, span: .ThisEvent)
person vadian    schedule 08.08.2015

Лучше, если вы обработаете ошибки, вызванные saveEvent:

do {
    try store.saveEvent(event, span: .ThisEvent)
} catch let specError as NSError {
    print("A specific error occurred: \(specError)")
} catch {
    print("An error occurred")
}

Подробнее об обработке ошибок в Swift: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html

person j_gonfer    schedule 13.01.2016

Для Свифт 3

do {
   try self.eventStore.save(event, span: .thisEvent)
} catch let specError as NSError {
   print("A specific error occurred: \(specError)")
} catch {
   print("An error occurred")
}
person Hayden Passmore    schedule 28.10.2016