2016-09-20 45 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") 
     } 
    } 
} 

我知道我有機會獲得eventStore,因爲我可以拉的事件,以及將它們保存到EKEventStore.defaultCalendarForNewEvents並使用他們現有的日曆更新它們。

回答

0

爲什麼要創建新日曆可能有很多原因。就我個人而言,我選擇創建一個新日曆,當我想要將創建的一組事件與默認事件分開時創建一個新日曆。通過這種方式,當你認爲你不需要它們時,你還可以利用批量刪除這些新創建的事件。只需刪除日曆,其所有事件也將被清除。

順便說一句,如果你不知道應該是什麼source(icloud的,本地的,也許綁一些電子郵件帳戶等),你想創建,只使用一個默認的來源日曆

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

還要確保默認日曆的allowsContentModifications財產,如果你想使用它的來源,否則它很可能,你將無法在新的日曆中創建一個事件返回true

+0

你測試過這段代碼嗎?我一直在嘗試這個幾個小時,每次嘗試保存失敗。我甚至逐字複製和粘貼你的代碼無濟於事。 –

+0

程序中'eventStore'的價值是什麼?它必須是一個'EKEventStore'實例,而不是類對象。請向我們展示您的問題中的代碼和錯誤消息。 – ozgur

+0

問題已更新 –