2016-08-24 3 views
2

я использую большой код из:как я могу проверить, если событие существует в календаре

func addEventToCalendar(title: String, description: String?, startDate: NSDate, endDate: NSDate, completion: ((success: Bool, error: NSError?) -> Void)? = nil) { 

    let eventStore = EKEventStore() 

    eventStore.requestAccessToEntityType(.Event, completion: { (granted, error) in 

     if (granted) && (error == nil) { 

      let event = EKEvent(eventStore: eventStore) 

      event.title = title 
      event.allDay = true 
      event.startDate = startDate 
      event.endDate = endDate 
      event.notes = description 
      event.calendar = eventStore.defaultCalendarForNewEvents 

      do { 
       try eventStore.saveEvent(event, span: .ThisEvent) 
      } catch let e as NSError { 
       completion?(success: false, error: e) 
       return 
      } 
      completion?(success: true, error: nil) 

     } else { 
      completion?(success: false, error: error) 
     } 

    }) 
} 

, но как я могу проверить, если событие уже существует?

ответ

5

Например, вы можете проверить событие в своем календаре с теми же настройками, что и ваше мероприятие. Вы можете использовать NSPredicate для этого:

let startDate = yourStartDate 
let endDate = yourEndDate 
let predicate = eventStore.predicateForEventsWithStartDate(startDate, endDate: endDate, calendars: nil) 
let existingEvents = eventStore.eventsMatchingPredicate(predicate) 
for singleEvent in existingEvents { 
    if singleEvent.title == yourEventTitle && singleEvent.startDate == yourStartDate { 
     // Event exist 
     ... 
    } 
}