Swift カレンダー、イベント追加、カレンダー(EKCalendar)設定
イベントにカレンダー(EKCalendar)設定

「Swift カレンダー、イベント追加」時はデフォルトカレンダー設定
event.calendar = eventStore.defaultCalendarForNewEvents
EKEvent.calendarは「var calendar: EKCalendar! { get set }」です。
EKCalendarを設定すればいい事が分かります。
問題
ここで嵌りました。
UIでカレンダー選択させる為に、カレンダーを取得、保存していました。
let calendars = eventStore.calendars(for: .event)
この保存していたカレンダーから選択したものを「var calendar: EKCalendar! { get set }」に設定しました。
結果、エラーになるのです。
「Attempting a cross-store copy for object of type EKCalendar」
コピー出来ないという事です。
解決方法
EKEventStoreの「calendarItem(withIdentifier:)」を使用します。
保存していたカレンダー(EKCalendae)のcalendarIdentifierを使用します。
let event = EKEvent(eventStore: eventStore)
event.title = self.titleText.text
event.startDate = self.startDatePicker.date
event.endDate = self.endDatePicker.date
let calendar = self.calendars[calendarPicker.selectedRow(inComponent: 0)]
event.calendar = eventStore.calendar(withIdentifier: calendar!.calendarIdentifier)
if allday == true {
event.isAllDay = true
}
do {
try eventStore.save(event, span: .thisEvent)
}
catch {
let nserror = error as NSError
print(nserror)
}





