アプリでリマインダーを設定しています。EKEvent
を使用してカスタム イベントを追加しましたiCal
。からイベントを取得するiCal
と、その日に存在するすべてのイベントが取得されます。アプリのみで追加されたイベントを取得/取得する方法はありますか?eventIdentifier
プロパティを試しましEKEvent
たが、読み取り専用プロパティです。誰か助けてくれませんか???
2 に答える
特定の日付に一致するすべてのカレンダー イベントをループすることもできますが、これは推奨される方法ではありません。各イベントは、一意の 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];
クラッジ:
iCal アラームを設定するために作成した AppleScript でも同様の問題がありました。次のパスでスクリプトが作成したイベントを特定して削除できるようにしたかったのです。
iCal イベントのタグのようなプロパティが見つからなかったので、文字列である location プロパティを使用することになりました。「 」に設定して検索しました。(警告: アラーム メッセージには、括弧で囲まれた末尾の場所が含まれているため、これは少し複雑です。)
アプリで他の目的で location プロパティが必要な場合でも、識別文字シーケンスを追加できる場合があります。または、他の方法では必要のない他のプロパティを使用することもできます。