Сохранение EKEvent в определенный календарь - PullRequest
0 голосов
/ 06 марта 2019

Я работаю над приложением, которое должно создавать события в пользовательском календаре. Я написал код ниже, но мне кажется, что у меня проблема с запуском в главном потоке, а не в дополнительном - я думаю. Основной вопрос всегда без использования EKEventKitUI (я делаю свой собственный интерфейс), как сохранить события в определенном календаре.

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

import UIKit
import EventKit

class createEventVC: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource  {

@IBAction func saveDateAction(_ sender: Any) {
let eventStore: EKEventStore = EKEventStore()
eventStore.requestAccess(to: .event) {(granted, error) in
 if (granted) && (error == nil)
 {
 let event: EKEvent = EKEvent(eventStore: eventStore)
 event.title = self.eventtitle
 event.isAllDay = true
 var row: Double = 0
 DispatchQueue.main.async {
   event.startDate = self.DatePicker.date
   event.endDate = self.DatePicker.date
   event.notes = self.AlertNotices.text
   row = Double(self.DaysPicker.selectedRow(inComponent: 0))
   let reloffset: Double = 60 * 60 * 24 * (row+1.5)
   let alarm: EKAlarm = EKAlarm(relativeOffset: -reloffset)
   event.addAlarm(alarm)
   event.calendar = self.getMYCalendar()
  }
  do {
   try eventStore.save(event, span: .thisEvent, commit: true)
  } catch let error as NSError {
   print(error)}
  }
 } else {
   DispatchQueue.main.async {
    self.calAccessDeniedError()}
 }
 }
}

func getMYCalendar() -> EKCalendar {
  let eventStore : EKEventStore = EKEventStore()
  let allcals: [EKCalendar] = eventStore.calendars(for: .event)
  var MYcal: EKCalendar = eventStore.defaultCalendarForNewEvents!
  for i in 0...(allcals.count-1) {
     if allcals[i].title == "MINE"{
        MYcal = allcals[i]
        return MYcal
     }
  }
  return MYcal
}
...