Я работаю над приложением, которое должно создавать события в пользовательском календаре. Я написал код ниже, но мне кажется, что у меня проблема с запуском в главном потоке, а не в дополнительном - я думаю. Основной вопрос всегда без использования 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
}