2011-02-18 23 views
3

我在我的應用程序中設置提醒。我已經使用EKEvent添加了一個自定義事件至iCal。現在,當我從iCal中檢索事件時,我可以看到當天所有的事件。有沒有辦法通過我的應用程序獲取/檢索事件,我試過eventIdentifier屬性EKEvent,但它是隻讀屬性。 任何人都可以幫助嗎?在iCal中添加標識符或標籤自定義事件是否有任何方法?

回答

1

未完善:

我有一個AppleScript我設置iCal鬧鐘提出了類似的問題;我希望能夠識別和刪除我的腳本在下一回閤中所做的事件。

我找不到任何iCal事件的標籤類屬性,所以我最終使用了location屬性,它是一個字符串;我把它設置爲「」並搜索。 (警告:警報消息包括最後的位置,由parens包圍,所以這會使事情變得有點起作用。)

如果您需要位置屬性用於其他目的,您仍然可以添加一些識別字符序列。或者,也許你可以使用其他一些你不需要的財產。

3

您可以遍歷所有匹配特定日期但不是首選方法的日曆事件。每個事件都使用唯一的eventIdentifier屬性創建。保存事件時,您可以複製eventIdentifier,然後在下次希望修改該特定事件時,可以使用EKEventStore eventWithIdentifier方法加載事件。

的樣本可能是這樣的

EKEventStore *eventStore = [[EKEventStore alloc] init]; 
    NSError *err; 
    EKEvent *event = [EKEvent eventWithEventStore:eventStore]; 
    //modify all the event properties you would like then save 
    [eventStore saveEvent:event span:EKSpanThisEvent error:&err]; 
    self.calendarEventID = event.eventIdentifier; 
    [eventStore release]; 

以後如果你想要從上面的代碼保存的事件中,你可以做以下

//self.calendarEventID is a NSString property declared in the .h file and synthesized in .m 
    EKEvent *myEvent = [eventStore eventWithIdentifier:self.calendarEventID]; 
+0

我會建議不要依賴於事件標識符!從EventKit類中取出`EKEvent.h` _請注意,如果您更改事件的日曆,則此ID可能會更改。由於同步操作,ID當前也有可能改變。例如,如果用戶將不同客戶端上的事件移至另一個日曆,我們將在此處將其視爲一個全新的事件._ – Muli 2017-04-04 11:12:01

相關問題