2016-09-20 7 views
2

EKEvents을 생성, 업데이트 및 삭제하는 iOS 앱을 만들고 있습니다. 이벤트를 EKEventStore.defaultCalendarForNewEvents에 저장하면 쉽게 수행 할 수 있습니다. 어떤 상황에서 내 자신의 앱에 새로운 EKCalendar을 만들고 싶다면 어떤 기능이 필요합니까?새 EKCalendar를 만드는 데 필요한 적절한 상황 iOS

저는 현재 Swift 3.0에서 일정을 만들려고하고 있는데, 계속 실패하고 있기 때문에 새로운 일정의 목적이 무엇인지 배회하게됩니다.

fileprivate var eventStore = EKEventStore() 
fileprivate var newCalendar : EKCalendar? 

func createNewCalendar() { 
    self.newCalendar = EKCalendar(for: .event, eventStore: self.eventStore) 
    self.newCalendar!.title = "newCal" 
    let sourcesInEventStore = self.eventStore.sources 
    self.newCalendar!.source = eventStore.defaultCalendarForNewEvents.source 

    let newCalIndex = sourcesInEventStore.index {$0.title == "newCal"} 
    if newCalIndex == nil { 
     do { 
      try self.eventStore.saveCalendar(self.newCalendar!, commit: true) 
      print("cal succesful") 
     } catch { 
      print("cal failed") 
     } 
    } 
} 

내가 행사에 뽑을 수뿐만 아니라 그들이 EKEventStore.defaultCalendarForNewEvents에 저장하고 기존 달력을 사용하여 업데이트하기 때문에 내가 eventStore에 액세스 할 수 있습니다 알고 있습니다.

답변

0

새 캘린더를 만드는 이유는 여러 가지가 있습니다. 개인적으로 이벤트 그룹을 작성한 이벤트 그룹과 기본 그룹 이벤트 그룹에 연결하려는 경우 새 달력을 작성하기로했습니다. 이런 식으로 새로 만든 이벤트를 필요 없다고 생각할 때 대량으로 이벤트를 삭제할 수 있습니다. 달력을 삭제하면 모든 이벤트가 제거됩니다. 당신이 source해야 무엇인지 확실하지 않은 경우 (아이 클라우드, 지역, 어쩌면 일부 메일 계정 등으로 연결) 그런데

, 당신은 단지 기본 하나의 소스를 사용 만들려는 달력의 :

let newCalendar = EKCalendar(forEntityType: .Event, eventStore: eventStore) 
newCalendar.source = eventStore.defaultCalendarForNewEvents.source 

또한 그렇지 않으면 새 달력에서 이벤트를 만들 수 없습니다 가능성이 높다 당신이 소스를 사용하려면 기본 일정의 allowsContentModifications 속성이 true를 반환해야합니다.

+0

이 코드를 테스트 해 보셨습니까? 나는 이것을 몇 시간 동안 시험해 보았고 그것을 구하려고 시도 할 때마다 실패했다. 나는 당신의 코드를 아무렇지도 않게 그대로 복사하여 붙여 넣기조차했다. –

+0

프로그램의'eventStore' 값은 무엇입니까? 클래스 객체가 아닌'EKEventStore' 인스턴스 여야합니다. 귀하의 질문에 오류 코드와 코드를 제시하십시오. – ozgur

+0

질문이 업데이트되었습니다. –