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) }